先明確幾個概念:
1. Ambari只能安裝Hortonworks Data Platform,即Hortonworks的開源Hadoop,不支持Apach的Hadoop平臺;
2. 對於已經安裝了Apach Hadoop或者其他Hadoop平臺的,不能使用Ambari來管理;
再說幾個注意事項:
1. Ambari默認的安裝方式是使用yum,從遠程下載HDP組件安裝,而HDP平臺安裝包都非常大(本例中使用的HDP-2.4.1安裝包爲6G),Ambari平臺有又30分鐘的Timeout限制,如果在30分鐘內下載不完HDP,就會造成安裝失敗。建議修改下載源文件,配置爲本地源;
2. Ambari安裝過程爲自動安裝,自動安裝腳本會創建很多用戶和其他組件(如系統自帶的Java和數據庫),建議使用一套乾淨的環境來安裝。
3. 系統請關閉Selinux、防火牆和THP;
4. 集羣機器請事先配置ssh互信;還是建議使用root用戶來互信;
操作系統:CentOS 6.6
集羣機器情況:
機器名
IP
功能
備註
Namenode1
172.26.5.21
NameNode and JobTracker
以下可能簡稱爲主機
Data01
172.26.5.22
Second Namenode
以下可能簡稱爲節點
Data02
172.26.5.23
DataNode and TaskTracker
以下可能簡稱爲節點
Data03
172.26.5.24
DataNode and TaskTracker
以下可能簡稱爲節點
2.1 配置本地源
上文提到,爲了加快安裝速度和防止超時錯誤,建議爲HDP配置本地源,請在事先在網上下載HDP、HDP-UTILS和Ambari,本例中幾個組件版本爲HDP-2.5.0,HDP-UTILS-1.1.0.21和Ambari-2.4.1.0。我們把namenode1服務器做爲源服務器。以下操作在namenode1機器運行。
1、下載壓縮包
首先下載包含必要軟件的壓縮包(tarball)到本地,以centOS6、centOS7,Ambari 2.4.1和HDP2.5.0.0爲例:
Ambari-2.4.1.0 壓縮包地址:
http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.4.1.0/ambari-2.4.1.0-centos7.tar.gz
http://public-repo-1.hortonworks.com/ambari/centos6/2.x/updates/2.4.1.0/ambari-2.4.1.0-centos6.tar.gz
HDP-2.5.0.0壓縮包地址:
http://public-repo-1.hortonworks.com/HDP/centos7/2.x/updates/2.5.0.0/HDP-2.5.0.0-centos7-rpm.tar.gz
http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.5.0.0/HDP-2.5.0.0-centos6-rpm.tar.gz
HDP UTILS壓縮包下載地址:
http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.21/repos/centos7/HDP-UTILS-1.1.0.21-centos7.tar.gz
http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.21/repos/centos6/HDP-UTILS-1.1.0.21-centos6.tar.gz
其他版本,下載地址請參考:
Ambari:
http://docs.hortonworks.com/HDPDocuments/Ambari-2.4.1.0/bk_ambari-installation/content/ambari_repositories.html
HDP和HDP UTILS:
http://docs.hortonworks.com/HDPDocuments/Ambari-2.4.1.0/bk_ambari-installation/content/hdp_stack_repositories.html
2.1.1 安裝配置本地源需要的組件
yum install httpd
yum install yum-utils
yum repolist
yum install createrepo
2.1.2 安裝httpd服務
1. 直接使用命令:yum install httpd;安裝完成後,會生成 /var/www/html 目錄。
2. 在/var/www/html目錄下,分別建立ambari和hdp目錄
[root@namenode1~]# mkdir /var/www/html/ambari
[root@namenode1~]# mkdir /var/www/html/hdp
[root@namenode1~]# tar -xf ambari-2.4.1.0-centos6.tar.gz -C /var/www/html/ambari/
[root@namenode1~]# tar -xf HDP-2.5.0.0-centos6-rpm.tar.gz -C /var/www/html/hdp/
3. 啓動httpd服務
[root@namenode1~]# service httpd restart
4. 設置httpd服務開機自動啓動
[root@namenode1 ~]# chkconfig httpd on
2.1.3 下載、配置Ambari本地源ambari.repo
1. 把下載的Ambari tar包解壓後拷貝到剛纔建立的/var/www/html/ambari/目錄中,在瀏覽器中輸入地址,就可以看到ambari目錄結構
[root@namenode1 ~]# tar -xf ambari-2.4.1.0-centos6.tar.gz -C/var/www/html/ambari/
http://172.26.5.21/ambari/AMBARI-2.4.1.0/centos6/
域名後80爲httpd服務配置的端口
2. 使用wget命令:
wget -nvhttp://public-repo-1.hortonworks.com/ambari/centos6/2.x/updates/2.4.1.0/ambari.repo -O/etc/yum.repos.d/ambari.repo
vi /etc/yum.repos.d/ambari.repo命令完成後,
修改ambari.repo文件
[Updates-ambari-2.4.1.0]
name=ambari-2.4.1.0 - Updates
baseurl=http://172.26.5.21/ambari/AMBARI-2.4.1.0/centos6/
gpgcheck=1
gpgkey=http://172.26.5.21/ambari/AMBARI-2.4.1.0/centos6/2.4.1.0-22/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1
紅色字體爲修改部分,把baseurl換成本地的url。
可以通過設置gpgcheck=0來禁用GPG檢查,如果不禁用,我們也可以修改gpgkey成本地的庫源。其中,INSERT-BASE-URL爲之前設置好的本地鏡像Ambari的URL地址。以我爲例,我是安裝在機器系統爲centOS6的172.26.5.21上,所以,我的INSERT-BASE-URL爲http://172.26.5.21/ambari/AMBARI-2.4.1.0/centos6,gpgkey爲http://172.26.5.21/ambari/AMBARI-2.4.1.0/centos6/2.4.1.0-22/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
2.1.2 配置HDP本地源
把下載的HDP-2.5.0.0-centos6-rpm.tar.gz包拷貝到/var/www/html/hdp/目錄下,用瀏覽器輸入網址http://172.26.5.21/hdp/HDP-2.5.0/centos6/ ,查看HDP目錄結構
[root@namenode1 ~]# tar -xf HDP-2.5.0.0-centos6-rpm.tar.gz -C/var/www/html/hdp
http://172.26.5.21/hdp/HDP/centos6/
這個地址,就是本地源的地址
在/etc/yum.repo.d目錄中,修改HDP.repo文件
VERSION_NUMBER=2.5.0.0-1245
[HDP-2.5.0.0]
name=HDP Version - HDP-2.5.0.0
baseurl=http://172.26.5.21/hdp/HDP/centos6/
gpgcheck=1
gpgkey=http://172.26.5.21/hdp/HDP/centos6/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1
黃色字體爲修改部分,把baseurl換成本地的url。
2.1.3 配置HDP-UTILS
同樣,把下載的HDP-UTILS-1.1.0.20-centos6.tar.gz包拷貝到/var/www/html/hdp/ HDP-UTILS-1.1.0.21目錄下
[root@namenode1 ~]#mkdir /var/www/html/hdp/HDP-UTILS-1.1.0.21
root@namenode1 ~]# tar -xf HDP-UTILS-1.1.0.21-centos6.tar.gz -C /var/www/html/hdp/HDP-UTILS-1.1.0.21
用瀏覽器輸入網址http://172.26.5.21/hdp/HDP-UTILS-1.1.0.20/centos6/ ,查看HDP-UTILS目錄結構
在/etc/yum.repo.d目錄中,修改HDP.repo文件
[HDP-UTILS-1.1.0.21]
name=HDP-UTILS Version - HDP-UTILS-1.1.0.21
baseurl=http://172.26.5.21/hdp/HDP-UTILS-1.1.0.21/
gpgcheck=1
gpgkey=http://172.26.5.21/hdp/HDP-UTILS-1.1.0.21/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1
紅色字體爲修改部分,把baseurl換成本地的url。
2.1.4 生成本地源
使用createrepo命令,生成本地源
[root@namenode1 ~]# mkdir -p/var/www/html/hdp/HDP/centos6/
[root@namenode1 ~]# mkdir -p/var/www/html/hdp/HDP-UTILS-1.1.0.21/
[root@namenode1 ~]# mkdir -p /var/www/html/ambari/AMBARI-2.2.1.0/centos6/[root@namenode1 ~]# createrepo /var/www/html/hdp/HDP/centos6/
[root@namenode1 ~]# createrepo /var/www/html/hdp/HDP-UTILS-1.1.0.21/
2.2 關閉Selinux和THP
1.2.1 修改hostname
vi/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=namenode1
NOZEROCONF=yes
把所有要添加到集羣中的主機都要加入hosts中,格式如下:
[root@ namenode1 ~]# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomainlocalhost6 localhost6.localdomain6
172.26.5.21 namenode1
172.26.5.22 data01
172.26.5.23 data02
172.26.5.24 data03
for i in {21,22,23,24};do scp /etc/[email protected].$i:/etc;done
2.2.2安裝java軟件
[root@namenode1 ~]# mkdir/usr/java
[root@namenode1 ~]# chown hadoop:hadoop /usr/java
1)解壓java軟件包
[root@namenode1 hadoop]$ tar xvfjdk-7u79-linux-x64.tar.gz -C /usr/java/
2)編輯環境變量
[root@namenode1 ~]# cat/etc/profile
export JAVA_HOME=/usr/java/jdk1.7.0_79
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
關閉Selinux
注意,在集羣的每個節點,都要關閉Selinux。
使用sestatus -v 命令,查看Selinux狀態。
如果不是disable狀態,編輯/etc/sysconfig/selinux 文件
vi /etc/sysconfig/selinux
把裏邊的一行改爲
SELINUX=disabled
保存,然後重啓機器。
2.2.3 關閉THP
在集羣的每個節點,都要關閉。編輯/etc/grub.conf文件,在kernel 行後面加入
transparent_hugepage=never,保存退出,重啓機器。
2.2.4 配置NTP時間同步
⑴ vi /etc/ntp.conf
restrict 127.0.0.1
restrict -6 ::1
restrict 172.26.5.21 mask 255.255.255.0 nomodify notrap
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
⑵ 啓動ntp服務
#/etc/init.d/ntpd start
添加到自啓動
所有節點執行如下命令,讓每次系統啓動的時候自動啓動ntp服務:
chkconfig --level 35 ntpd on
⑶客戶端設置
[root@namenode1 ~]#vi /etc/ntp.conf
driftfile /var/lib/ntp/drift 文件裏有
server 172.26.5.21
restrict 172.26.5.21 nomodify notrap noquery
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
Npt主服務器ip要去掉,只是針對客戶的而言
[root@namenode1 ~]# for i in {32,33,34,35,36,37,38,39,40,41,42};do scp/etc/ntp.conf [email protected]$i:/etc/ntp.conf; done
啓動服務
/etc/init.d/ntpd start
添加到自啓動
所有節點執行如下命令,讓每次系統啓動的時候自動啓動ntp服務:
chkconfig --level 35 ntpd on
所有客戶端手動同步時間
[root@data01 ~]#ntpdate -u manager
[root@data02 ~]# crontab -e
*/5 * * * * root /usr/sbin/ntpdate 172.26.5.21; /sbin/hwclock -w
[root@masternode02 ~]# service crond restart ;chkconfig --level 35crond on
三、Ambari安裝
使用命令查看案例列表:
yum clean all
yum list|grep ambari
直接使用命令yum install ambari-server安裝即可,由於配置了本地源,安裝過程非常快,可比網絡資源節省一半以上的時間。
安裝完成後,使用命令, ambari-server setup 設置Ambari,基本都可以一路回車使用默認設置。爲了演示完整的安裝過程,本例中做了一些特殊設置。請同學們根據環境的實際情況自行選擇配置。
1.設置JDK
[root@namenode1~]# ambari-server setup
Usingpython /usr/bin/python
Setupambari-server
CheckingSELinux...
SELinuxstatus is 'disabled'
Customizeuser account for ambari-server daemon [y/n] (n)? y
Enter useraccount for ambari-server daemon (root):
Adjustingambari-server permissions and ownership...
Checkingfirewall status...
CheckingJDK...
[1] OracleJDK 1.8 + Java Cryptography Extension (JCE) Policy Files 8
[2] OracleJDK 1.7 + Java Cryptography Extension (JCE) Policy Files 7
[3] CustomJDK
==============================================================================
Enter choice(1): 3
WARNING: JDKmust be installed on all hosts and JAVA_HOME must be valid on all hosts.
WARNING: JCEPolicy files are required for configuring Kerberos security. If you plan to useKerberos,please make sure JCE Unlimited Strength Jurisdiction Policy Files arevalid on all hosts.
Path toJAVA_HOME: /usr/java/jdk1.7.0_79
ValidatingJDK on Ambari Server...done.
Completingsetup...
2.設置數據庫,Ambari默認使用的是PostgreSQL,也可指定其他數據庫
Configuringdatabase...
Enteradvanced database configuration [y/n] (n)? y
Configuringdatabase...
==============================================================================
Choose oneof the following options:
[1] -PostgreSQL (Embedded)
[2] - Oracle
[3] - MySQL/ MariaDB
[4] -PostgreSQL
[5] -Microsoft SQL Server (Tech Preview)
[6] - SQLAnywhere
[7] - BDB
==============================================================================
Enter choice(1): 3
Hostname(localhost): namenode1
Port (3306):
Databasename (ambari):
Username(ambari):
EnterDatabase Password (bigdata):
Re-enterpassword:
Configuringambari database...
Copying JDBCdrivers to server resources...
Configuringremote database connection properties...
WARNING:Before starting Ambari Server, you must run the following DDL against thedatabase to create the schema:/var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql
Proceed withconfiguring remote database connection properties [y/n] (y)? y
Extractingsystem views...
.....ambari-admin-2.4.1.0.22.jar
......
Adjustingambari-server permissions and ownership...
AmbariServer 'setup' completed successfully.
將Ambari數據庫腳本導入到數據庫
如果使用自己定義的數據庫,必須在啓動Ambari服務之前導入Ambari的sql腳本
用Ambari用戶(上面設置的用戶)登錄mysql
[root@namenode1~]# mysql -u ambari -pambari -hnamenode1
CREATE USER'ambari' IDENTIFIED BY 'ambari';
grant allprivileges on *.* to 'ambari'@'namenode1' identified by 'ambari' with grantoption;
grant allprivileges on *.* to 'ambari'@'%' identified by 'ambari' with grant option;
mysql>create database ambari DEFAULT CHARSET utf8;
mysql>use ambari
mysql>source /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql
9)啓動Amabri
[root@namenode1~]# ambari-server start
Usingpython /usr/bin/python
Startingambari-server
AmbariServer running with administrator privileges.
Organizingresource files at /var/lib/ambari-server/resources...
Ambaridatabase consistency check started...
No errorswere found.
Ambaridatabase consistency check finished
Server PIDat: /var/run/ambari-server/ambari-server.pid
Server outat: /var/log/ambari-server/ambari-server.out
Server logat: /var/log/ambari-server/ambari-server.log
Waiting forserver start....................
AmbariServer 'start' completed successfully.
Ambari默認使用的是8080端口,如果端口被佔用,可修改配置文件/etc/ambari-server/conf/ambari.properties,在文件中增加 client.api.port=<port_number>
配置完成後,使用命令 ambari-server start 啓動Ambari。
啓動成功後,在瀏覽器輸入網址http://master:8080 ,看到如下界面,就說明安裝成功了。
Ambari默認用戶名/密碼是:admin/admin
http://172.26.5.21:8080/#/login
安裝Ambariagent
wget -nv http://public-repo-1.hortonworks.com/ambari/centos6/2.x/updates/2.4.1.0/ambari.repo-O /etc/yum.repos.d/ambari.repo
root@namenode1~]# mkdir -p /var/www/html/ambari/centos6/2.x/updates/2.4.1.0
[root@namenode1~]# createrepo /var/www/html/ambari/centos6/2.x/updates/2.4.1.0
[root@data01~]# cat /etc/yum.repos.d/ambari.repo
#VERSION_NUMBER=2.4.1.0-22
[Updates-ambari-2.4.1.0]
name=ambari-2.4.1.0- Updates
baseurl=http://172.26.5.21/ambari/centos6/2.x/updates/2.4.1.0
gpgcheck=1
gpgkey=http://172.26.5.21/ambari/centos6/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1
yum cleanall
yum listupdate
yummakecache
yum repolist
四、部署大數據平臺
圖文並茂
步驟一,點擊運行安裝嚮導
步驟二,輸入你的集羣名稱
步驟三,選擇HDP版本
注意: HDP資源默認是從網絡下載,請點擊下方的Advance Repository Options,把HDP和HDP-UTILS地址替換成我們上方配置的本地源,否則容易發生超時錯誤。
步驟四,輸入安裝選項,數據集羣的機器host name,ssh互信的私鑰和ssh用戶;
請注意:在ssh user accout的地方,爲了安裝成功,我使用的是root用戶
由於我的機器不在域中,系統會提示不是一個完整的FQDN(完整的FQDN類似於master.example.com這種格式),不用管他,直接點OK按鈕。
步驟五,選擇完機器後,Ambari會自動在其他的機器上安裝ambari-agent代理
可能會出現的問題:
ambari-agent註冊失敗,日誌顯示端口被佔用,網上查詢結果是Agent使用的8670端口
手工連接到失敗的服務器上,netstat -anp|grep8670,發現果然在監聽狀態,然後輸入命令kill -9 [進程id],再Retry便可成功
安裝成功後,界面如下:
請注意:畫面下方的potential problems,這裏系統在堅持潛在的問題,完成後,會有顯示當前問題列表,檢查完成後,系統會給出問題解決方法,請把列出的警告的problems也一一解決掉,否則安裝可能會不成功
步驟六,選擇需要安裝的服務組件,已經包括了HDFS,Yarn,Hbase,Hive,Spark等等,的確非常方便,不用在一一部署了
步驟七,分配Master服務器,可以看到能做NameNode和2nd NameNode高可用,Hbase也是
步驟八,選擇Slave節點,Client隨便選一個Slave安裝就可以了。
root@namenode1~]# ambari-server setup --jdbc-db=mysql --jdbc-driver=/opt/mysql-connector-java-5.1.36/mysql-connector-java.jar
步驟九,配置文件,可圖形化配置core-site.xml,hdfs-site.xml等文件,有時候系統出現標記,如Hive組件,系統會要求你輸入元數據庫的用戶名,密碼和地址,輸入完成後,點擊下一步
點擊下一步後,檢查配置
步驟十,系統根據配置,開始部署
等待安裝完成,因爲我們配置了本地源,安裝非常迅速
可能會出現的問題:
Too many levels of symbolic links
安裝HDFS和HBASE的時候出現/usr/hdp/current/hadoop-client/conf doesn't exist
是由於/etc/hadoop/conf和/usr/hdp/current/hadoop-client/conf目錄互相鏈接,造成死循環,所以要改變一個的鏈接
需要在失敗的節點運行命令:
cd /etc/hadoop
rm -rf conf
ln -s/etc/hadoop/conf.backup /etc/hadoop/conf
HBASE也會遇到同樣的問題,解決方式同上
cd /etc/hbase
rm -rf conf
ln -s/etc/hbase/conf.backup /etc/hbase/conf
ZooKeeper也會遇到同樣的問題,解決方式同上
cd /etc/zookeeper
rm -rf conf
ln -s/etc/zookeeper/conf.backup /etc/zookeeper/conf
步驟十一、安裝完成後,系統會自動系統大數據平臺
大功告成。
---------------------