1. 程式人生 > >Ambari HDP叢集搭建全攻略

Ambari HDP叢集搭建全攻略

>世界上最快的捷徑,就是腳踏實地,本文已收錄【[架構技術專欄](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(高可用) 因為篇幅有限,圖頭後面會單開一張