實驗報告 第四組
服務器搭建及安裝Ambari環境
-
Ambari簡介
Ambari 跟 Hadoop 等開源軟件一樣,也是 Apache Software Foundation 中的一個項目。 Ambari的作用就是創建、管理、監視 Hadoop 的集羣,但是這裏的 Hadoop 是廣義,指的是 Hadoop 整個生態圈(例如 Hive,Hbase,Spark,Kafka,Zookeeper 等),而並不僅是特指 Hadoop。用一句話來說,Ambari 就是爲了讓 Hadoop 以及相關的大數據軟件更容易使用的一個工具。
Ambari 自身也是一個分佈式架構的軟件,主要由兩部分組成:Ambari Server 和 Ambari Agent。簡單來說,用戶通過 Ambari Server 通知 Ambari Agent 安裝對應的軟件;Agent 會定時地發送各個機器每個軟件模塊的狀態給 Ambari Server,最終這些狀態信息會呈現在 Ambari 的 GUI,方便用戶瞭解到集羣的各種狀態,並進行相應的維護。
-
集羣介紹
三臺2V CPU 16GB內存 1Gbps內網速度 40G硬盤空間的服務器,分別命名爲
master 內網IP:172.26.191.114 外網IP:39.98.45.52 node1 內網IP:172.26.191.113 node2 內網IP:172.26.191.112
-
配置服務器Ambari環境
a) 修改機器名、Hosts文件
查看當前的Hostname:
# hostname
修改Hostname:(以master爲例)
# hostnamectl set-hostname master
修改每一臺機器上的/etc/hosts文件:
# vim /etc/hosts 172.26.191.114 master 172.26.191.113 node1 172.26.191.112 node2
修改完以後,重啓每一臺機器。
b) 設置ntpd自動啓動,所有機器
沒有安裝ntpd的機器,用yum命令安裝一下:
# yum install -y ntp
設置服務開機啓動:
# systemctl enable ntpd
啓動服務:
# systemctl start ntpd
c) 設置時間同步,所有機器
# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime # ntpdate us.pool.ntp.org
d) 關閉Selinux,所有機器
# vim /etc/sysconfig/selinux selinux=disalbed
e) 關閉防火牆
# systemctl stop firewalld # systemctl disable firewalld
f) 製作集羣的SSH免密碼登錄
在master上創建密鑰:
# ssh-keygen -t rsa
一路Enter到密鑰生成
進入~/.ssh目錄,查看密鑰文件:
私鑰:id_rsa
公鑰:id_rsa.pub切換到node1等機器上,創建~/.ssh目錄
# mkdir ~/.ssh
從master上,發送公鑰給目標服務器:
# scp ~/.ssh/id_rsa.pub node1:/root/.ssh/authorized_keys_from_master # scp ~/.ssh/id_rsa.pub node2:/root/.ssh/authorized_keys_from_master
在被登錄的服務器上,合併公鑰:
# cd ~/.ssh # cat authorized_keys_from_ambari >> authorized_keys
對所有服務器上的.ssh目錄和文件授權:
# chmod 700 ~/.ssh # chmod 600 ~/.ssh/*
在master上驗證SHH可以免密碼登錄目標服務器:
# ssh hadoop.namenode
如果無需輸入密碼,且用hostname命令查看到正確的主機名,則表示配置免密碼登錄成功;
如果仍需要輸入密碼,則不成功;如果不成功,先嚐試權限修改;如果仍不成功,則要刪除密鑰再做一次。
-
安裝JDK1.8
下載JDK 1.8.0.tar.gz文件,解壓:
# wget -c https://download.oracle.com/otn/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz # mkdir /usr/local/jdk # tar -xvf jdk-8u131-linux-x64.tar.gz -C /usr/local/jdk/
配置環境變量,添加以下內容:
# vim /etc/profile #java export JAVA_HOME=/usr/local/jdk/jdk1.8.0_131 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
執行以下語句,使環境變量立刻生效:
# source /etc/profile
驗證Java安裝成功:
# java -version java version "1.8.0_131" Java(TM) SE Runtime Environment (build 1.8.0_131-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
-
安裝MySQL
Ambari安裝會將安裝等信息寫入數據庫,建議使用自己安裝的MySQL數據庫,也可以不安裝而使用默認數據庫PostgreSQL。
Mysql數據庫安裝過程如下:
下載mysql的repo源(CentOS 7.2的yum源中默認沒有mysql,要先下載mysql的repo源):
# wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
安裝mysql57-community-release-el7-8.noarch.rpm包:
# rpm -ivh mysql57-community-release-el7-8.noarch.rpm --nodeps --force
安裝這個包後,會獲得兩個mysql的yum repo源:
# cd /etc/yum.repos.d # ls -l
確認存在下列兩個repo源文件:
mysql-community.repo mysql-community-source.repo
安裝mysql:
# yum install -y mysql-server
啓動mysql服務,查看MySQL服務是否已啓動:
# systemctl start mysqld # service mysqld status
重置root密碼:
MySQL5.7會在安裝後爲root用戶生成一個隨機密碼,而不是像以往版本的空密碼。 可以安全模式修改root登錄密碼或者用隨機密碼登錄修改密碼。
下面用隨機密碼方式:
MySQL爲root用戶生成的隨機密碼通過mysqld.log文件可以查找到:
# grep 'temporary password' /var/log/mysqld.log # mysql -u root -p mysql> Enter password: #(輸入剛纔查詢到的隨機密碼)
修改root用戶密碼:(MySQL的密碼策略比較複雜,過於簡單的密碼會被拒絕)。首先修改安全策略,避免過於簡單的密碼被拒絕:
mysql> set global validate_password_policy=0; mysql> set global validate_password_length=4;
重置用戶密碼:
mysql> alter user 'root'@'localhost' identified by 'root-1234';
完成後,保存退出:
mysql> flush privileges; mysql> quit;
使用剛剛設置的新密碼登錄:
# mysql -u root -p mysql> use mysql; 如果進行操作出現下面的提示: You must reset your password using ALTER USER statement before executing this statement. 就再設置一遍密碼: mysql> set password = password('root-1234');
開放3306端口
允許使用用戶名root密碼root-1234從任何主機連接到mysql服務器。
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY ' root-1234' WITH GRANT OPTION; mysql> FLUSH PRIVILEGES;
安裝mysql jdbc 驅動:
# yum install -y mysql-connector-java
-
創建必要的數據庫和數據庫用戶
安裝完成後創建ambari數據庫及用戶,登錄root用戶執行下面語句:
mysql> create database ambari character set utf8; mysql> CREATE USER 'ambari'@'%' IDENTIFIED BY 'ambari-1234'; mysql> GRANT ALL PRIVILEGES ON *.* TO 'ambari'@'%'; mysql> FLUSH PRIVILEGES;
如果要安裝Hive,再創建Hive數據庫和用戶 再執行下面的語句:
mysql> create database hive character set utf8; mysql> CREATE USER 'hive'@'%' IDENTIFIED BY 'hive-1234'; mysql> GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%'; mysql> FLUSH PRIVILEGES;
如果要安裝Oozie,再創建Oozie數據庫和用戶 再執行下面的語句:
mysql> create database oozie character set utf8; mysql> CREATE USER 'oozie'@'%' IDENTIFIED BY 'oozie-1234'; mysql> GRANT ALL PRIVILEGES ON *.* TO 'oozie'@'%'; mysql> FLUSH PRIVILEGES;
-
下載Ambari的資源
下載HortWorks官網上的3個庫到本地(也可以在線下載,但是速度會很慢)。
我們先把hortworks官網上需要下載的3個庫下載到本地(這個還是需要很長時間的,當然你也可以在線下載,通過wget但是由於文件比較大,所以下載會非常慢)然後把他上傳到我們的鏡像服務器上。
三個庫分別爲:
http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.2.1.0/ambari-2.2.1.0-centos7.tar.gz
http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/centos7/HDP-UTILS-1.1.0.20-centos7.tar.gz
http://public-repo-1.hortonworks.com/HDP/centos7/2.x/updates/2.4.0.0/HDP-2.4.0.0-centos7-rpm.tar.gz
下載之後,在master上配置httpd服務:
# yum install -y httpd
把下載到的3個資源文件,上傳到master,並解壓到指定目錄:
# mkdir /var/www/html/ambari-hdp
# mkdir /var/www/html/ambari-hdp/HDP-UTILS
# tar -xvf ambari-2.2.1.0-centos7.tar.gz -C /var/www/html/ambari-hdp/ # tar -xvf HDP-2.4.0.0-centos7-rpm.tar.gz -C /var/www/html/ambari-hdp/ # tar -xvf HDP-UTILS-1.1.0.20-centos7.tar.gz -C /var/www/html/ambari-hdp/HDP-UTILS
啓動httpd服務:
# systemctl start httpd
通過瀏覽器訪問本地資源地址,如果能看到以下頁面,則表示配置成功:
-
配置Yum本地Repos資源池
在ambari.server上執行:
# yum install -y yum-plugin-priorities
a) 修改Yum安裝源的校驗
# vi /etc/yum/pluginconf.d/priorities.conf
設置爲以下內容
[main] enabled=1 gpgcheck=0
b) 製作本地資源文件
創建Ambari、HDP、HDP-UTIL資源文件:
- ambari.repo:
[ambari-2.2.1.0] name=ambari-2.2.1.0 baseurl=http://master/ambari-hdp/AMBARI-2.2.1.0/centos7/2.2.1.0-161 gpgcheck=0 gpgkey=http://master/ambari-hdp/AMBARI-2.2.1.0/centos7/2.2.1.0-161/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins enabled=1 priority=1
- hdp.repo
[HDP-2.4.0.0] name=Hortonworks Data Platform Version - HDP-2.4.0.0 baseurl=http://master/ambari-hdp/HDP/centos7/2.x/updates/2.4.0.0 gpgcheck=0 gpgkey=http://master/ambari-hdp/HDP/centos7/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins enabled=1 priority=1
- hdp-util.repo
[HDP-UTILS-1.1.0.20] name=Hortonworks Data Platform Version - HDP-UTILS-1.1.0.20 baseurl= http://master/ambari-hdp/HDP-UTILS-1.1.0.20/repos/centos7 gpgcheck=0 enabled=1 priority=1
製作完成後,移動到/etc/yum.repos.d/;依次執行以下命令,更新本地資源池:
# yum clean list # yum update list # yum makecache
等待更新完畢後,查看資源池:
# yum repolist
如果看到以下資源,表示配置成功:
-
安裝Ambari-Server
執行安裝命令:
# yum install -y ambari-server
安裝過程無需互動
如果提示找不到KEY,則執行如下命令:
rpm --import /var/www/html/ambari-hdp/AMBARI-2.2.1.0/centos7/2.2.1.0-161/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
將Ambari數據庫腳本導入到數據庫。
Ambari安裝會將安裝等信息寫入數據庫,建議使用自己安裝的MySQL數據庫,也可以不安裝而使用默認數據庫PostgreSQL。如果使用自己定義的數據庫,必須在啓動Ambari服務之前導入Ambari的sql腳本。
用root用戶登錄mysql
# mysql -uroot -p mysql> use ambari; mysql> source /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql;
-
配置Ambari-Server
執行配置命令:
# ambari-server setup
提示是否自定義設置?輸入:y
Customize user account for ambari-server daemon [y/n] (n)? y
ambari-server 賬號。輸入:root
Enter user account for ambari-server daemon (root): root Adjusting ambari-server permissions and ownership...
檢查防火牆,如果關閉則不用操作
Checking firewall status... Redirecting to /bin/systemctl status iptables.service
設置JDK。輸入:3
Checking JDK...Do you want to change Oracle JDK [y/n] (n)? y [1] Oracle JDK 1.8 + Java Cryptography Extension (JCE) Policy Files 8 [2] Oracle JDK 1.7 + Java Cryptography Extension (JCE) Policy Files 7 [3] Custom JDK ========================================== Enter choice (1): 3
如果上面選擇3自定義JDK,則需要設置JAVA_HOME。輸入:
/usr/local/jdk/jdk1.8.0_131 WARNING: JDK must be installed on all hosts and JAVA_HOME must be valid on all hosts. WARNING: JCE Policy files are required for configuring Kerberos security. If you plan to use Kerberos, please make sure JCE Unlimited Strength Jurisdiction Policy Files are valid on all hosts. Path to JAVA_HOME: /usr/local/jdk/jdk1.8.0_131 Validating JDK on Ambari Server...done. Completing setup...
數據庫配置。選擇:y
Configuring database...Enter advanced database configuration [y/n] (n)? y
選擇數據庫類型。輸入:3
Configuring database... ======================================== Choose one of the following options: [1] - PostgreSQL (Embedded) [2] - Oracle [3] - MySQL [4] - PostgreSQL [5] - Microsoft SQL Server (Tech Preview) [6] - SQL Anywhere ========================================== Enter choice (1): 3
設置數據庫的具體配置信息,根據實際情況輸入,如果和括號內相同,則可以直接回車。
Hostname (localhost): ambari.server Port (3306): Database name (ambari): Username (ambari): Enter Database Password (ambari-1234):
提示必須安裝MySQL JDBC,已安裝則直接通過。
WARNING: Before starting Ambari Server, you must copy the MySQL JDBC driver JAR file to /usr/share/java. Press <enter> to continue.
啓動ambari-server服務
# ambari-server start
啓動後在瀏覽器輸入Ambari地址:http://39.98.45.52:8080/#/login
看到如下頁面,則表示安裝成功:
進入Ambari配置管理頁面:
用戶名:admin
密碼: admin
登錄成功進入以下頁面:
-
安裝Hadoop集羣
a) 在集羣節點上安裝JDK
在3臺作爲Hadoop集羣的機器上安裝JDK,要與master上安裝的完全一致
b) 安裝ambari-agent
將master上的3個.repo文件複製到hadoop集羣的三臺服務器上;並完成yum源更新的命令。
安裝ambari-agent:在集羣的3臺電腦上執行添加,並添加成開機自啓動服務:
# yum install -y ambari-agent # chkconfig --add ambari-agent
c) 通過安裝嚮導,配置Hadoop集羣
-
安裝嚮導
由於服務器已經釋放掉了這部分截圖沒有保留,使用網上的HDP2.3版本的圖片進行說明
首先點擊Launch Install Wizard
新建集羣,輸入集羣的名字
版本號選擇,這裏選擇的是HDP2.4
選擇本地安裝包的路徑,這裏OS選redhat7就可以(其實可以隨便選),然後HDP 和HDP-UTILS的路徑使用之前設置的路徑http://master/ambari-hdp/HDP/centos7/2.x/updates/2.4.0.0
http://master/ambari-hdp/HDP-UTILS-1.1.0.20/repos/centos7
這裏可能需要master換成內網IP
之後選擇跳過validation
創建ssh免登錄,之前設置的.ssh文件夾下有該文件,選擇master的私鑰id_rsa,上邊要把每個節點的名字寫上去,每個佔一行
master
node1
node2
Confirm Hosts,此處可能報錯,因爲openssl版本問題,可執行一下指令重新安裝
yum install openssl
然後又可能出現另一個問題,執行
# vim /etc/python/cert-verification.cfg
verify=disable #修改該變量
即可看到安裝成功
選擇要安裝哪些Services,Service簡介可見:
https://yq.aliyun.com/articles/491137?spm=a2c4e.11153940.0.0.4e8f26ab77Hq1J
http://www.wangjialong.cc/2017/09/25/ambari_info/
分配Master節點
配置一些服務信息
注意:安裝一些需要數據庫的service時,如果選擇已有的Mysql數據庫的話,需要在對應的節點上配置數據庫,配置過程可以見之前的安裝MySQL部分。
之後就一路下一步知道成功了。
最終運行成功的界面
參考文檔
https://yq.aliyun.com/articles/672277