基於Apache Ambari搭建Hadoop大資料平臺

gobitan發表於2017-02-28
基於Apache Ambari搭建Hadoop大資料平臺
作者:雨水/家輝  日期:2017年2月28日 CSDN部落格:http://blog.csdn.net/gobitan
摘要:對於大資料的初學者來說,搭建一個Hadoop大資料基礎平臺不是一件容易的事。而由Hortonworks貢獻給Apache開源社群的Ambari則提供了搭建整個Hadoop生態的一站式服務。本文以測試環境為例,詳細介紹了整個HDP的搭建過程。

全文共分為三個部分,第一部分是Ambari的準備部分;第二部分為安裝Ambari;第三部分為基於Ambari-server安裝Hadoop及其生態元件。
第一部分:
第一步:基礎叢集主機規劃
[1] ambari           192.168.81.128
[2] namenode    192.168.81.129
[3] hadoop01      192.168.81.130
[4] hadoop02      192.168.81.131  

CentOS作業系統安裝
第一步:下載VMware Player,並安裝。
具體過程略。

第二步:下載CentOS7,並在VMware Player上安裝
[1] 下載CentOS7
CentOS有幾個版本,DVD版本太大了(大約4G多),包括圖形介面,這裡作為伺服器工作沒有必要,因此選擇Minimal版本。下載地址:http://mirrors.163.com/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1611.iso。Minimal版本大約680M。
[2] 基於VMware Player安裝
建立一個新的虛擬機器,選擇從iso安裝,然後依次輸入:
全名:centos7_64,使用者名稱:dennis,密碼:123456,虛擬機器名字也為centos7_64,硬碟大小預設20G。建立好之後,修改下虛擬機器的配置:記憶體改為2048MB,處理器核心數量改為:2,其他保持預設即可,然後開始安裝。

第三步:作業系統配置
注意:以下操作如果沒有特別說明,均預設以root身份執行。
[1] 安裝net-tools
Miminal版本果然是小,連ifconfig命令都沒有安裝。執行如下安裝ifconfig:
# yum search ifconfig
根據查到的安裝包來安裝
# yum install -y net-tools.x86_64

[2] NTP安裝
# yum install -y ntp

[3] 修改檔案控制程式碼數
在/etc/security/limits.conf的末尾增加如下兩行:
* hard nofile 50000
* soft nofile 50000

[4] 關閉虛擬機器,然後將虛擬機器拷貝三份
[5] 依次啟動這四臺虛擬機器,修改虛擬機器的hostname和hosts
  (1) 分別將/etc/hostname中的內容改為ambari, namenode, hadoop01和hadoop02;
  (2) 分別在/etc/hosts檔案的後面加入如下內容:
192.168.81.128  ambari
192.168.81.129  namenode
192.168.81.130  hadoop01
192.168.81.131  hadoop02
hostname和hosts改完之後,統一把所有機器重啟一遍!讓配置生效!

第四步:配置Ambari Server到Ambari Agent的單向免密碼登陸
在Ambari Server節點執行如下命令:
ssh-keygen -t rsa 回車後再按連續三個回車
cd .ssh/
cat id_rsa.pub >> authorized_keys

分別在其他三臺機器上建立/root/.ssh目錄,如下:
# mkdir /root/.ssh

然後將authorized_keys拷貝到其他三臺機器的.ssh目錄,如下:
scp authorized_keys NameNode:/root/.ssh/
scp authorized_keys Hadoop01:/root/.ssh/
scp authorized_keys Hadoop02:/root/.ssh/

驗證配置:
[root@ambari ~]# ssh Ambari date; ssh NameNode date; ssh Hadoop01 date; ssh Hadoop02 date;
Tue Feb 28 03:26:26 PST 2017
Tue Feb 28 03:26:26 PST 2017
Tue Feb 28 03:26:26 PST 2017
Tue Feb 28 03:26:26 PST 2017

第五步:安裝nginx
# yum install -y nginx
# mkdir -p /var/www/html
# chcon -Rt httpd_sys_content_t /var/www/html/

修改/etc/nginx/conf.d/default.conf內容如下:
server {
    listen       8190;
    server_name  192.168.65.130;

    location / {
        root   /var/www/html;
        index  index.html index.htm;
    }
}

# 關閉selinux
將/etc/selinux/config中的SELINUX值改為disabled,儲存重啟作業系統。
注:因為是測試環境,建議將其他三臺機器的selinux都關閉了,這樣減少很多因為埠未開放導致的問題。生產環境另當別論,可參考selinux的相關操作。

# 拷貝預設主頁
# cp /usr/share/nginx/html/index.html /var/www/html/

# 啟動nginx
# service nginx start

# 設定nginx開機自啟動
# systemctl enable nginx.service

檢查nginx是否配置正確,訪問如下地址:
http://192.168.81.128:8190 

第六步:搭建Ambari本地源
從公共yum源安裝太慢了,因此需要搭建私有yum源來安裝。Ambari此為當前(2017-02-24)最新版本為2.4.2。具體版本可以參考:
如果要選擇其他版本,可以從這裡進入http://docs.hortonworks.com/index.html,然後進行選擇。

安裝createrepo
[1] yum install -y createrepo

配置Ambari源
因為ambari-2.4.2.0-centos7.tar.gz這個檔案有1.29G,因此建議用迅雷下載,然後傳到CentOS上。
備註:如果要下載其他版本,可參看《Hortonworks Data Platform: Apache Ambari Installation》
[3] 解壓ambari-2.4.2.0-centos7.tar.gz
將該檔案移到/var/www/html/目錄下,然後解壓
# tar zxf ambari-2.4.2.0-centos7.tar.gz
# mv AMBARI-2.4.2.0/ ambari
[4] 建立repo
# createrepo /var/www/html/ambari/

配置HDP源
檔案4.99G,同上,建議用迅雷下載。
[2] 解壓
# tar zxf HDP-2.5.3.0-centos7-rpm.tar.gz
[3] # createrepo /var/www/html/HDP/

配置HDP-UTILS 源
檔案745M,同上,建議用迅雷下載。
[2] 解壓
# tar zxf HDP-UTILS-1.1.0.21-centos7.tar.gz
[3]  # mv HDP-UTILS-1.1.0.21/ HDP-UTILS
# createrepo /var/www/html/HDP-UTILS/

編寫repo檔案
ambari.repo如下:
[ambari-2.4.2]
name=ambari-2.4.2
baseurl=http://192.168.81.128:8190/ambari
gpgcheck=0

HDP.repo如下:
[HDP-2.5.3]
name=HDP-2.5.3
baseurl=http://192.168.81.128:8190/HDP /centos7
gpgcheck=0

HDP-UTILS.repo如下:
[HDP-UTILS-1.1.0.21]
name=HDP-UTILS-1.1.0.21
baseurl=http://192.168.81.128:8190/HDP-UTILS /repos/centos7
gpgcheck=0

檢查repo的配置是否正確
# yum repolist
repo id                                                        repo name                                                      status
HDP-2.5.3                                                      HDP-2.5.3                                                        200
HDP-UTILS-1.1.0.21                                       HDP-UTILS-1.1.0.21                                          52
ambari-2.4.2                                                   ambari-2.4.2                                                      12
status不為零即可。

將repo拷貝到其他三臺機器
scp ambari.repo NameNode:/etc/yum.repos.d/
scp HDP.repo NameNode:/etc/yum.repos.d/
scp HDP-UTILS.repo NameNode:/etc/yum.repos.d/

scp ambari.repo Hadoop01:/etc/yum.repos.d/
scp HDP.repo Hadoop01:/etc/yum.repos.d/
scp HDP-UTILS.repo Hadoop01:/etc/yum.repos.d/

scp ambari.repo Hadoop02:/etc/yum.repos.d/
scp HDP.repo Hadoop02:/etc/yum.repos.d/
scp HDP-UTILS.repo Hadoop02:/etc/yum.repos.d/
可將上面命令放入一個shell檔案中,一次執行!

Ambari私有庫配置完成!

第二部分:安裝Ambari Server
第一步:安裝ambari-server
注:登陸到Ambari主機!
[1] # yum -y install ambari-server

[2] 上傳jce_policy-8.zip和jdk-8u112-linux-x64.tar.gz
下載jce_policy-8.zip和jdk-8u112-linux-x64.tar.gz,將其上傳到/var/lib/ambari-server/resources 
由於接下來的ambari-server setup中要安裝jdk,從網上下載太慢,而直接放到resource目錄沒有識別出來。因此,這裡先手動安裝好,然後指定路徑。
安裝jdk三步:先解壓到/opt目錄,再在/etc/profile中加入
export JAVA_HOME=/opt/jdk1.8.0_112
export PATH=$PATH:$JAVA_HOME/bin
儲存後再執行. /etc/profice讓其生效。

[3] 配置Ambari-server
# ambari-server setup -j 
中間有詢問,全部輸入y,有輸入全部採用預設。
資料使用者名稱和密碼:ambari/bigdata
注意:這一步有問題,採用的是Custom安裝,jce沒有用到

[4] 配置postgresql自啟動
chkconfig --level 35 postgresql on

[5] 啟動ambari-server
[root@Ambari ~]# ambari-server start
Using python  /usr/bin/python
Starting ambari-server
Ambari Server running with administrator privileges.
Organizing resource files at /var/lib/ambari-server/resources...
Ambari database consistency check started...
No errors were found.
Ambari database consistency check finished
Server PID at: /var/run/ambari-server/ambari-server.pid
Server out at: /var/log/ambari-server/ambari-server.out
Server log at: /var/log/ambari-server/ambari-server.log
Waiting for server start....................
Ambari Server 'start' completed successfully.

[6] 檢查狀態
[root@Ambari ~]# ambari-server status
Using python  /usr/bin/python
Ambari-server status
Ambari Server running
Found Ambari Server PID: 7913 at: /var/run/ambari-server/ambari-server.pid
[root@Ambari ~]# lsof -i:8080
COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java    7913 dennis 1423u  IPv6  61236      0t0  TCP *:webcache (LISTEN)
[root@Ambari ~]#

[7] 網頁登陸ambari-server
http://192.168.81.128:8080,使用者名稱和密碼都是admin
=====================Ambari-server搭建完成,下面開始在介面上安裝Hadoop叢集!

第三部分:在Ambari-server上安裝Hadoop叢集生態
登陸http://192.168.81.128:8080,然後點選"Launch Install Wizard"開始安裝!

第一步:叢集名字:dbigdata
第二步:版本選擇:全部選擇最新的,當前為HDP2.5,然後選擇本地源中的redhat7。填寫Base URL分別為:
http://192.168.81.128:8190/HDP/centos7
http://192.168.81.128:8190/HDP-UTILS/repos/centos7
第三步:安裝選項
[1] 輸入主機名:
NameNode
Hadoop01
Hadoop02
[2] 將私鑰ida_rsa上傳,這個是在做ssh免登陸那一步中生成的。

第四步:主機註冊
這一步如果註冊是失敗,可以點開看看具體原因(如下面可能的原因)。有時候會出現一些莫名其妙的錯誤,這時可以重試幾次。
註冊過程如果發現有issues,則需要點開,然後一一解決,如下面發現的問題:
[1] jdk需要在每臺機器上都有,同樣的位置;
[2] 需要將另外三臺的防火牆關了:service firewalld stop
[3] 另外三臺的ntp未執行: service ntpd start
[4] 檢查這三臺機子上/etc/yum.repos.d下的repo中的URL是否正確

第五步:選擇服務
安裝元件的選擇:
未選擇安裝的部分:
Falcon     0.10.0.2.5    Data management and processing platform
Storm     1.0.1.2.5    Apache Hadoop Stream processing framework
Flume     1.5.2.2.5    A distributed service for collecting, aggregating, and moving large amounts of streaming data into HDFS
Accumulo 1.7.0.2.5    Robust, scalable, high performance distributed key/value store.
Atlas    0.7.0.2.5    Atlas Metadata and Governance platform
Knox    0.9.0.2.5    Provides a single point of authentication and access for Apache Hadoop services in a cluster
Zeppelin Notebook    0.6.0.2.5    A web-based notebook that enables interactive data analytics. It enables you to make beautiful data-driven, interactive and collaborative documents with SQL, Scala and more.
第六步:分配節點

第七步:Master和Slave選擇
推薦DataNode和Client都安裝。
            
Hive Metastore資料庫的密碼:123456,MySQL資料庫(hadoop02)
Ambari Metrics: Grafana Admin Password: 123456
Smart Sense: 密碼:123456
Hive->Tez Container Size: 170M-->512M

系統提示Oozie使用Derby會導致某些功能無法使用,因此要使用MySQL。
https://dev.mysql.com/downloads/connector/j/ 下載mysql-connector-java-5.1.40.zip,解壓後可獲得mysql-connector-java-5.1.40-bin.jar,上傳至Ambari節點的/opt目錄下,然後執行如下命令:
ambari-server setup --jdbc-db=mysql --jdbc-driver=/opt/mysql-connector-java-5.1.40-bin.jar

注意:以下操作在Hadoop01(也就是Oozie Server所在節點)上執行!
因為執行yum install mysql預設安裝的是mariadb,它是MySQL的一個分支。
乾脆採用如下安裝:
[1] 安裝:yum install mariadb mariadb-server
[2] 啟動:service mariadb start
[3] 配置開機啟動:systemctl enable mariadb
[4] 安全配置:mysql_secure_installation
初次執行時,密碼為空,可直接回車。設定root密碼為:123456,其他預設。
參考:http://www.linuxidc.com/Linux/2016-03/128880.htm  CentOS 7.0 使用 yum 安裝 MariaDB 與 MariaDB 的簡單配置

然後進入MySQL,執行如下命令:
# mysql -uroot -p123456
MariaDB [(none)]>
CREATE USER 'oozie'@'%' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'oozie'@'%';
FLUSH PRIVILEGES;
CREATE DATABASE oozie;
這些都建立好之後,需要測試下資料庫的連線性。成功之後即可進入下一步!

然後就進入漫長地安裝等待。。。,如果有失敗的,多嘗試幾次!
安裝成功後,登陸:http://192.168.81.128:8080/,使用者名稱和密碼都是admin。


參考資料:
[1] 《Hortonworks Data Platform: Apache Ambari Installation》
[2] http://www.ibm.com/developerworks/cn/opensource/os-cn-bigdata-ambari/   Ambari——大資料平臺的搭建利器

相關文章