一 前言
閱讀本文前需要掌握的知識:
- Linux基本原理和命令
- Hadoop生態系統(包括HDFS,Spark的原理和安裝命令)
由於Hadoop生態系統組件眾多,導致大數據平台多節點的部署,監控極其不方便,因此一些Hadoop廠商提供了企業發行版,例如CDH,HDP等。這些Hadoop企業發行版將Hadoop生態系統的開源組件整合到了一個平台之上,並做了一些定制,提供了安裝,部署,監控等工具,大大方便了平台運維人員。
CDH是Cloudera公司向企業客戶提供的基於Apache Hadoop生態系統構建的大數據分析平台。
HDP是Hortonworks公司基於Hadoop生態系統開源組件構建的大數據分析平台。
我們選用HDP搭建企業級大數據平台,下面會着重分析說明原因。
二 大數據平台說明
目前企業級Hadoop發行版,免費版本主要有Hadoop Cloudera版本(Cloudera’s Distribution Including Apache Hadoop,簡稱“CDH”)和Hortonworks版本(Hortonworks Data Platform,簡稱“HDP”)。
2.1 CDH與HDP比較
CDH | HDP | |
---|---|---|
相同點 | 1.相對於Intel Hadoop 和IBM Hadoop的發行版而言,兩者都是免費版。 | 2.相對於Apache 開源社區版本,更易於維護,管理,且穩定性高。 |
不同點 | 文檔詳細,但區分免費版和企業版,企業版只有試用期 | HDP版本是比較新的版本,目前最新版(HDP2.6.0)與apache基本同步,因為Hortonworks內部大部分員工都是apache代碼貢獻者。 |
2.2 HDP大數據平台說明
我們的大數據平台基於HDP2.6.0版本搭建,HDP 2.6.0 Hadoop生態系統主要組件版本如下:

2.3 企業級大數據平台架構
根據我們目前的業務場景,我們主要選用Ambari(Hadoop生態系統管理監控),Hdfs(分布式文件系統),HBase(分布式列數據庫),Yarn(資源調度管理),Kafka(分布式消息組件),Spark(分布式內存計算引擎),Zookeeper(分布式服務組件)等組件作為我們大數據平台的基礎。下面主要簡單介紹我們搭建的企業級大數據平台主要組件(詳細內容請查看官方文檔):
- HDFS 事實上已經成為大數據存儲層的標准,經過多年的發展,目前基本功能(如高可用,異構存儲)已經非常穩定。
- HBase 是基於Hdfs的分布式列數據庫。可以作為存儲層的輔助,我們的業務場景用到了。
- Yarn是Hadoop生態系統的資源調度組件,我們使用Spark作為計算引擎,集群每隔節點上的資源如何合理分配?如果共享底層的存儲數據?都離不開Yarn。
- Spark 作為我們大數據平台的分布式計算引擎,其核心是RDD(彈性分布式數據集),RDD有兩類操作Transformation和Action,基本可以滿足我們常用的數據分析場景。
-
Ambari 是我們大數據平台的管理和監控組件,主要由兩部分組成:Ambari Server 和 Ambari Agent組成。簡單來說,用戶通過 Ambari Server 通知 Ambari Agent 安裝Hadoop生態系統的組件;Agent 會定時地發送集群各個機器每個組件模塊的狀態給 Ambari Server,最終這些狀態信息會呈現在 Ambari 的 Web界面上,方便用戶了解到集群的各種狀態,並進行相應的維護。
企業級大數據平台.png
三 大數據平台安裝部署
3.1 集群規划
我們的集群初期規划為6個節點,1個Ambari節點(負責整個集群監控和管理),1個NameNode/Master節點(HDFS,Spark,HBase的主節點),1個SecondaryNameNode節點(HDFS的備份節點),3個DataNode/Work節點(HDFS,HBase的數據節點)
3.1.1 硬件規划
我們的物理機安裝Centos-7-x86_64-Minimal(Centos 7.3 最小版)系統,由於使用Spark做分析引擎,對內存的要求比較高,具體規划如下:
主機名稱 | 操作系統 | 內存 | 硬盤 |
---|---|---|---|
ambari | Centos-7-x86_64-Minimal | 4G | 200G |
bigdata1 | Centos-7-x86_64-Minimal | 16G | 500G |
bigdata2 | Centos-7-x86_64Minimal | 16G | 500G |
bigdata3 | Centos-7-x86_64-Minimal | 16G | 500G |
bigdata4 | Centos-7-x86_64-Minimal | 16G | 500G |
bigdata5 | Centos-7-x86_64-Minimal | 16G | 500G |
物理機安裝完Centos系統后,使用下面命令查看內存
## 查看系統內存 free -h
除過Ambari節點,集群其他各節點物理機Centos系統硬盤分區如下:
/boot 1024M
/ 50G ##根目錄 /home 20G ##用戶目錄 /usr 20G ##安裝軟件 /data 400G ##存放數據 swap 8G
3.1.2 軟件規划
主機名稱 | 安裝HDP組件 | JPS啟動進程 |
---|---|---|
ambari | JDK/PostgreSQL/Ambari | AmbariServer |
bigdata1 | JDK/Zookeeper/Hadoop/HBase | Namenode/QuoqumPeerMain/Hmaster/ History Server/Kafka |
bigdata2 | JDK/Zookeeper/Hadoop | Resourcemanager/SecondaryNameNode |
bigdata3 | JDK/Zookeeper/Hadoop/HBase | QuoqumPeerMain/Nodemanager/Hregionserver |
bigdata4 | JDK/Zookeeper/Hadoop/HBase | QuoqumPeerMain/Nodemanager/Hregionserver |
bigdata5 | JDK/Zookeeper/Hadoop/HBase | QuoqumPeerMain/Nodemanager/Hregionserver |
3.2 准備工作
- HDP 2.6.0以上的版本,支持Ambari 2.5.x版本部署安裝。
- 在所有節點安裝Oracle JDK 8。
## 注意去官方下載jdk需要header頭 cd /usr/local wget -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-linux-x64.tar.gz ## 解壓 jdk文件,修改文件名 tar zxf jdk-8u144-linux-x64.tar.gz mv jdk-8u144-linux-x64 java ## 配置java環境變量 vi /etc/profile 添加下面內容: export JAVA_HOME=/usr/local/java export CLASSPATH=.:$JAVA_HOME/lib PATH=$PATH:$JAVA_HOME/bin ## 環境變量生效 source /etc/profile
- 建議配置每個機器節點上的yum為阿里yum,以提高下載速度。由於centos 默認的yum鏡像是國外的,速度慢,可以配置國內的阿里yum。
## 備份 默認yum鏡像文件 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup ## 下載阿里CentOS-Base.repo鏡像文件 到/etc/yum.repos.d/ curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo ## 執行命令生成緩存 yum makecache
- 所有節點配置主機名
## 打開hosts文件 vi /etc/hosts 192.168.0.100 ambari 192.168.0.101 bigdata1 192.168.0.102 bigdata2 192.168.0.103 bigdata3 192.168.0.104 bigdata4 192.168.0.105 bigdata5 ## 注意不要移除hosts文件中這兩行 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 ## 檢查主機名 hostname -f ## 設置主機名,例如設置192.168.0.100機器的主機名為ambari hostname ambari
- 配置集群各節點間的時間同步
## 每個機器安裝時間同步工具,並啟動ntp服務,Hbase之間數據同步需要配置時間同步 yum install -y ntp systemctl enable ntpd
- 配置各節點間SSH無密碼訪問
# 每個節點生成ssh的key,執行后會有多個輸入提示,不用輸入任何內容,全部直接回車即可 ssh-keygen #拷貝到其他節點 ssh-copy-id -i /.ssh/id_rsa -p 22 root@ambari ssh-copy-id -i /.ssh/id_rsa -p 22 root@bigdata1 ssh-copy-id -i /.ssh/id_rsa -p 22 root@bigdata2 ssh-copy-id -i /.ssh/id_rsa -p 22 root@bigdata3 ssh-copy-id -i /.ssh/id_rsa -p 22 root@bigdata4 ssh-copy-id -i /.ssh/id_rsa -p 22 root@bigdata5 #驗證是否設置成功 ssh bigdata1
- 暫時關閉各節點防火牆和SELinux
## 關閉防火牆 systemctl disable firewalld service firewalld stop ## 關閉SELinux setenforce 0
- 設置每個節點的文件打開數
## 查看linux默認打開文件數 ulimit -Sn ulimit -Hn ## 設置文件打開數為10000個 ulimit -n 10000
3.3 安裝部署
3.3.1 在Ambari節點安裝Ambari
- ambari節點配置ambari repo文件
## root用戶登陸ambari節點,下載ambari repo文件 wget -nv http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.5.1.0/ambari.repo -O /etc/yum.repos.d/ambari.repo ## 查看ambari節點的yum源,可以看到我們剛才配置的ambari源和最開始配置的aliyun 源 yum repolist ## 返回結果如下 repo id repo name status !ambari-2.5.1.0 ambari Version - ambari-2.5.1.0 12 !base/7/x86_64 CentOS-7 - Base - mirrors.aliyun.com 9,363 !extras/7/x86_64 CentOS-7 - Extras - mirrors.aliyun.com 450 !updates/7/x86_64 CentOS-7 - Updates - mirrors.aliyun.com 2,146 repolist: 11,971
- 安裝ambari-server
## 安裝ambari-server yum install ambari-server
- 配置ambari server
注意ambari依賴於數據庫,默認內嵌PostgreSQL,我么選用默認內嵌的postgresql數據庫
# 在ambari節點執行下面命令 ambari-server setup 下面是配置執行流程,按照提示操作 (1) 提示是否自定義設置。輸入:y Customize user account for ambari-server daemon [y/n] (n)? y (2)ambari-server 賬號。輸入:root Enter user account for ambari-server daemon (root):root Adjusting ambari-server permissions and ownership... (3)設置JDK。輸入:3 Checking JDK... Do you want to change Oracle JDK [y/n] (n)? y [] Oracle JDK 1.8 + Java Cryptography Extension (JCE) Policy Files 8 [] Oracle JDK 1.7 + Java Cryptography Extension (JCE) Policy Files 7 [] Custom JDK ============================================================================== Enter choice (1): 3 (4)如果上面選擇3自定義JDK,則需要設置JAVA_HOME。輸入:/usr/local/java 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/java Validating JDK on Ambari Server...done. Completing setup... (5)數據庫配置。選擇:y Configuring database... Enter advanced database configuration [y/n] (n)? y (6)選擇數據庫類型。輸入:1 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): 1 (7)設置數據庫的具體配置信息,根據實際情況輸入,如果和括號內相同,則可以直接回車。 Hostname (localhost): ambari Port (): Database name (ambari): Username (ambari): Enter Database Password (bigdata):
- 啟動Amabri
## 啟動ambari服務 ambari-server start ## 成功啟動后在瀏覽器輸入Ambari地址:http://{ambari節點IP地址}:8080/
3.3.2 安裝HDP
之前我們大數據測試平台的安裝都是用命令行,單獨安裝Hadoop生態系統的組件,現在我們利用Ambari 圖形界面安裝,都是一路Next操作,由於安裝時未截圖,我去網上找了一些安裝界面,做個注釋說明
- 瀏覽器打開網站 http://{ambari節點IP地址}:8080/,登錄Ambari,默認管理員賬戶登錄, 賬戶:admin 密碼:admin

- 安裝向導界面

- 設置集群名稱

- 配置HDP 公共源(選擇HDP2.6)
選擇RedHat7,HDP 2.6.0 yum地址如下 HDP-2.6: http://public-repo-1.hortonworks.com/HDP/centos7/2.x/updates/2.6.0.3 HDP-UTILS-1.1.0.21:http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.21/repos/centos7
- 設置集群hosts列表,配置ambari節點私鑰文件
## Target Host配置集群各節點 192.168.0.101 bigdata1 192.168.0.102 bigdata2 192.168.0.103 bigdata3 192.168.0.104 bigdata4 192.168.0.105 bigdata5 # Host Registraion information 填寫ambari節點私鑰,SSH user Account賬戶設置為root
- Host確認(確認前面配置集群中hosts列表 中的機器是否都可用,如果集群中機器Success后進行下一步操作)
- 選擇要安裝的服務
注意我們主要安裝HDFS,HBase ,ZooKeeper,Spark2,Kafka。在HDP2.6.0版本默認需要安裝YARN+MAPREDUCE2,Tez,Hive,SmartSense等組件(下圖是網上找的圖,只是個參考)


- 安裝服務的Master配置

- 安裝服務的Slaves和Clients配置
## 配置HDFS的DataNode ,YARN的NodeManager 以及HBase的Hregionserver的節點為 bigdata3,bigdata4,bigdata5
- 安裝服務的配置文件屬性設置(根據提示設置安裝服務的必須屬性,注意HDFS的NameNode和DataNode節點目錄不能設置為home/目錄)
- 顯示配置信息



- 開始安裝部署服務(安裝各個服務,並且完成安裝后會啟動相關服務,安裝過程比較長,如果中途出現錯誤,請根據具體提示或者log進行操作)
-
安裝完成后,Ambari面板如下:
ambari面板.png
四 總結
- ambari機器需要外網IP地址
- 如果需要搭建內網hdp yum 源,需要去官網下載hdp 和ambari [1]
- HDP下安裝的 Spark的在Yarn-cluster模式下,個人覺得應該在bigdata3,bigdata4,bigdata5 安裝spark slaves服務,但是和我們單獨安裝spark模式不同,這里master和slave節點上的服務相同(都是Spark History Server),后面繼續學習。
- Ambari infra和Ambari Metrics的作用需要深入了解。
- 注意HDP2.6.0下的HBase版本比開源社區的版本底很多,開發時盡量用HDP提供的Hbase客戶端版本。
參考文章
[1] 官方Ambari安裝HDP文檔
作者:IIGEOywq
鏈接:https://www.jianshu.com/p/079a0c98e0bc
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。