Ambari HDP叢集搭建全攻略
阿新 • • 發佈:2020-12-08
>世界上最快的捷徑,就是腳踏實地,本文已收錄【[架構技術專欄](https://www.jiagoujishu.com)】關注這個喜歡分享的地方。
> 最近因為工作上需要重新用Ambari搭了一套Hadoop叢集,就把搭建的過程記錄了下來,也希望給有同樣需求的小夥伴們一個參考,
>
> 作者:圖頭資料
>
> Ambari Ubuntu14.04 最新版本 2.2.1
>
> HDP Ubuntu14.04 最新版本 2.4.3.0
## Ambari是什麼
Apache Ambari是一種基於Web的工具,支援Apache Hadoop叢集的供應、管理和監控。
Ambari已支援大多數Hadoop元件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Zookeeper、Sqoop和Hcatalog等。
Apache Ambari 支援HDFS、MapReduce、Hive、Pig、Hbase、Zookeepr、Sqoop和Hcatalog等的集中管理。也是5個頂級hadoop管理工具之一。(就是一個開源的hadoop一鍵式安裝服務)
**我們能用他幹什麼?我們為什麼要用它呢?**
我們可以使用ambari快速的搭建和管理hadoop和經常使用的服務元件。
比如hdfs、yarn、hive、hbase、oozie、sqoop、flume、zookeeper、kafka等等。(說白了就是可以偷好多懶)
再說說我們為什麼要用它
- 第一是ambari還算是一個早期的Hadoop管理叢集工具
- 第二主要是現在Hadoop官網也在推薦使用Ambari。
- 通過一步一步的安裝嚮導簡化了叢集供應。
- 預先配置好關鍵的運維指標(metrics),可以直接檢視Hadoop Core(HDFS和MapReduce)及相關專案(如HBase、Hive和HCatalog)是否健康。
- 支援作業與任務執行的視覺化與分析,能夠更好地檢視依賴和效能。
- 通過一個完整的RESTful API把監控資訊暴露出來,集成了現有的運維工具。
- 使用者介面非常直觀,使用者可以輕鬆有效地檢視資訊並控制叢集。
Ambari使用[Ganglia](https://baike.baidu.com/item/Ganglia)收集度量指標,用[Nagios](https://baike.baidu.com/item/Nagios)支援系統報警,當需要引起管理員的關注時(比如,節點停機或磁碟剩餘空間不足等問題),系統將向其傳送郵件。
此外,Ambari能夠安裝安全的(基於Kerberos)Hadoop叢集,以此實現了對Hadoop 安全的支援,提供了基於角色的使用者認證、授權和審計功能,併為使用者管理集成了LDAP和Active Directory。
## 叢集搭建
**1、讓我們先做一些安裝前的準備工作**
```shell
## 先告訴伺服器們他們都是誰,小名都叫啥(修改配置hosts檔案)
vim /etc/hosts
10.1.10.1 master
10.1.10.2 slave1
10.1.10.3 slave2
## 然後讓我們拿著門禁卡自由的出入他們家 嗶咔進站(配置免密登入)
ssh-keygen -t rsa ##在所有的機器上執行
cat ~/.ssh/id_rsa.pub ## 檢視公鑰
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys ## 將公鑰寫入authorized_keys檔案中
### 首先把所有的公鑰都寫入master伺服器
### 其次把master的公鑰別寫入slave1,slave2
### 最後使用scp命令把口令告訴別人 (我不會告訴你我的口令是“老狼老狼幾點了”)
scp ~/.ssh/authorized_keys slave1:~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys slave2:~/.ssh/authorized_keys
##更新時區和系統本地化的配置
apt-get install localepurge ## 一頓enter不要管 (解除安裝那些不被使用的local翻譯文件)
dpkg-reconfigure localepurge && locale-gen zh_CN.UTF-8 en_US.UTF-8 ## 一頓enter不要管
apt-get update && apt-get install -y tzdata
echo "Asia/Shanghai" > /etc/timezone ## 修改時區為上海
rm /etc/localtime
dpkg-reconfigure -f noninteractive tzdata
vi /etc/ntp.conf
server 10.1.10.1
```
**2、然後在做一些Ubuntu系統的優化**
```shell
###1.1 關閉交換分割槽
swapoff -a
vim /etc/fstab ## 刪除註釋swap那一行 類似下面
# swap was on /dev/sda2 during installation
#UUID=8aba5009-d557-4a4a-8fd6-8e6e8c687714 none swap sw 0 0
### 1.2 修改檔案描述符開啟數 在最後新增 ulimit
vi /etc/profile
ulimit -SHn 512000
vim /etc/security/limits.conf ## 調整大小都增大10倍
* soft nofile 600000
* hard nofile 655350
* soft nproc 600000
* hard nproc 655350
### 1.2 使用命令是修改生效
source /etc/profile
###1.3 修改核心配置
vi /etc/sysctl.conf
### 貼上去就行
fs.file-max = 65535000
net.core.somaxconn = 30000
vm.swappiness = 0
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 16384 16777216
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 1024 65000
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1
net.ipv6.conf.lo.disable_ipv6=1
### 執行命令讓配置生效
sysctl -p
###1.4 配置核心關閉THP功能
echo never > /sys/kernel/mm/transparent_hugepage/enabled
##永久關閉。
vi /etc/rc.local
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
```
**3、安裝部署ambari-server (環境:Ubuntu 14.04 + Ambari 2.2.1)**
```shell
## 更新下載源
wget -O /etc/apt/sources.list.d/ambari.list http://public-repo-1.hortonworks.com/ambari/ubuntu14/2.x/updates/2.2.1.0/ambari.list
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com B9733A7A07513CAD
apt-get update
## 在master節點安裝ambari-server
apt-get install ambari-server -y
## 在所有節點安裝 ambari-agent
apt-get install ambari-agent -y
```
**4、修改ambari-agent配置指向ambari-server**
```shell
vi /etc/ambari-agent/conf/ambari-agent.ini
## 修改hostname
[server]
hostname=master
url_port=8440
secured_url_port=8441
## 初始化ambari-server配置ambari 服務 Database, JDK(預設1.7), LDAP 一般選預設
ambari-server setup ## 狂點enter
## 啟動ambari
ambari-server start
ambari-agent start
```
**5、經過頭痛的Shell命令,開始連點人間的東西了。**
使用你的瀏覽器訪問 http://10.1.10.1:8080/ 賬號密碼預設為`amdin/admin `點選`LAUNCH INSTALL WIZARD`讓我們愉快的開始吧
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/5d8ea94ef2db4c23bfec7b26afd21b53~tplv-k3u1fbpfcp-zoom-1.image)
**6、給叢集起一個名字**
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/cb0b9669334642d3ba99aaa45e3c7c11~tplv-k3u1fbpfcp-zoom-1.image)
**7、這個裡要注意一點確定你的hdp版本不然後面會有麻煩**
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c73a8333635445a9895b3d1893ee2c6b~tplv-k3u1fbpfcp-zoom-1.image)
**8、我在這裡面配置的是HDP2.4.3 **
例子: http://public-repo-1.hortonworks.com/HDP/debian7/2.x/updates/2.4.3.0
點選next 會檢查資料來源是否正常,如果這裡報錯可以點選 "Skip Repository Base URL validation (Advanced) " 進行跳過檢查
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d24581fba7bd4b70972112d8604eaa32~tplv-k3u1fbpfcp-zoom-1.image)
**9、填入hostname master slave1 slave2 因為在slave安裝ambari-agent 所以直接選擇不使用ssh**
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/70d427250053476394efc6461de92d24~tplv-k3u1fbpfcp-zoom-1.image)
**10、檢查伺服器狀態--這裡需要等待一下 如果等待時間過長可以重啟ambari-server**
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/cc5cf3905cf14558949c141ff9214bbb~tplv-k3u1fbpfcp-zoom-1.image)
**11、選擇我們需要的服務 HDFS YARN ZK**
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/931d6a9c74d4458891ff6fdab899e65a~tplv-k3u1fbpfcp-zoom-1.image)
**12、直接使用Ambari預設分配方式 點選下一步開始安裝**
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/003e3788bf214a639ff4fb5a3ac09dea~tplv-k3u1fbpfcp-zoom-1.image)
**13、下面就是考慮網速的時候了**
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/1cf3da5b668245ceb991f0688ef7a395~tplv-k3u1fbpfcp-zoom-1.image)
**14、安裝完成之後一路Next重新整理主頁面就看到了我們的Hadoop叢集這裡預設都是啟動的**
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/46b22860a5cb46f6b0963ec973f54604~tplv-k3u1fbpfcp-zoom-1.image)
**15、進入HDFS下 點選restart ALL 可以重啟所有元件**
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/7914defe51264e6a859ca134f7de2e34~tplv-k3u1fbpfcp-zoom-1.image)
**16、驗證一下是否安裝成功 點選NameNodeUI**
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e0403b185c50456eb8e7378d81208919~tplv-k3u1fbpfcp-zoom-1.image)
**17、基礎資訊頁**
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/98781b308f274b328510b73d9765ad0a~tplv-k3u1fbpfcp-zoom-1.image)
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/50bf843545a1497cb22d08ac2db40467~tplv-k3u1fbpfcp-zoom-1.image)
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/8f1146e491dd46828cef0f61e823eb0a~tplv-k3u1fbpfcp-zoom-1.image)
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/7b3077ab32274718b62370f85e3207ee~tplv-k3u1fbpfcp-zoom-1.image)
**18、Hadoop已經搭建完成完成了不想跑一個任務試試嗎?**
```shell
## 進入伺服器執行
### 建立hdfs目錄 可以再http://master:50070/explorer.html#/介面
hdfs dfs -mkdir -p /data/input
### 從伺服器上傳檔案到hdfs上
hdfs dfs -put 檔案 /data/input/
### 使用官網提供的例子進行測試
hadoop jar hdfs://tesla-cluster/data/hadoop-mapreduce-examples-2.7.1.2.4.0.0-169.jar wordcount /data/input /data/output1
```
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3423adf101fd40118e9c60983ab631f7~tplv-k3u1fbpfcp-zoom-1.image)
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/5161c2d3e85b415699d88f877aef334e~tplv-k3u1fbpfcp-zoom-1.image)
**19、結果如下 生成_SUCCESS 和檔案**
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/93c0356378c845dab7da220403ed2aee~tplv-k3u1fbpfcp-zoom-1.image)
## 下面是不正經敘述
終於,通過上面的步驟我們搭建了一套hadoop叢集,但隨之而來的還有一些問題,NameNode 和ResouceManage 都是單點的模式,ambari支援HA(高可用) 因為篇幅有限,圖頭後面會單開一張