大資料平台,涉及到很多軟體産品,如果剛剛入行hadoop,直接下載下傳軟體包,手動配置檔案的方式,并沒有那麼直覺和容易。
Ambari提供了一個選擇,圖形化安裝和管理hadoop叢集
Ambari公司就不介紹了,Ambari軟體很直覺,但是實際安裝感受并不好。反倒不如自己安裝可控。出錯/失敗之後,“retry”似乎是唯一的辦法。
現在我們開始着手安裝了,安裝過程中,我會介紹我遇到的坑,和如何再次爬出來。
1. 首先登陸官方頁面
1
<code>https://docs.hortonworks.com/</code><code>index</code><code>.html</code>
2. 選擇需要的版本
<a href="https://s2.51cto.com/oss/201711/13/9fe7793bd8a526850af4a178650ae9ab.png" target="_blank"></a>
3. 點選installation
<a href="https://s5.51cto.com/oss/201711/13/01729755f9597eb0083d756ba2ca6f08.png" target="_blank"></a>
4. 選擇Install Ambari
<a href="https://s5.51cto.com/oss/201711/13/821e1ae7c8d4e30eb94fcddb62c3c8ce.png-wh_500x0-wm_3-wmp_4-s_4144391295.png" target="_blank"></a>
5. 然後進入文檔頁面
<a href="https://s5.51cto.com/oss/201711/13/5e10cc4a8f7c0366a92a47b7d949525e.png" target="_blank"></a>
官方安裝步驟,注意,選擇你需要安裝的版本的安裝文檔
<code>https://docs.hortonworks.com/HDPDocuments/Ambari-2.4.2.0/bk_ambari-installation/content/download_the_ambari_repo_lnx6.html</code>
6. 根據上面的步驟,就可以進入到配置yum 源頭,由于源頭在海外,速度超慢,我先将軟體包下載下傳到本地。
2
3
4
5
6
7
8
<code>wget -nv http://</code><code>public</code><code>-repo-1.hortonworks.com/ambari/centos6/2.x/updates/2.4.2.0/ambari.repo -O /etc/yum.repos.d/ambari.repo </code>
<code>yum repolist</code>
<code>yum install -downloadonly ambari-server </code><code>--downloaddir=/tmp/</code>
<code>yum install </code><code>--downloadonly HDP-2.5.0.0 --downloaddir=/tmp/</code>
<code>yum install </code><code>--downloadonly HDP-2.5.* --downloaddir=/tmp/</code>
<code>[root@db_monitor]# ll</code>
<code>-rw-r</code><code>--r-- 1 root root 5996696005 Aug 27 2016 HDP-2.5.0.0-centos6-tars-tarball.tar.gz</code>
<code>-rw-r</code><code>--r-- 1 root root 833424206 Oct 26 23:09 HDP-UTILS-1.1.0.21-centos6.tar.gz</code>
7.下載下傳到本地之後,在一個伺服器上,建立一個HTTP服務,用來後面的安裝
<code>yum install httpd -y</code>
<code># service httpd restart</code>
<code># chkconfig httpd </code><code>on</code>
将下載下傳的HDP軟體包放入到/var/www/html/目錄下
即可通過網頁通路了
<a href="https://s5.51cto.com/oss/201711/13/de58773656cd4a53f920002e164d2715.png" target="_blank"></a>
準備環節完成了,開始安裝了
8. 配置節點的ssh免密登陸,隻在安裝ambari的伺服器上可以通路其他節點即可。
<code>$ ssh-keygen -t rsa -f ~/.ssh/id_rsa</code>
三個回車即可
拷貝密鑰到全部節點即可(隻有ambari通路其他server不需要密碼,反向通路是需要密碼的)
<code>ssh-copy-id server2</code>
<code>ssh-copy-id server3</code>
<code>ssh-copy-id server4</code>
9. 配置ambaris,先關閉selinux(我使用到ansible,可以通過修改配置檔案來禁用)
<code>ansible </code><code>all</code> <code>-m selinux -a </code><code>'state=disabled'</code>
10.關閉防火牆
<code>ansible </code><code>all</code> <code>-m service -a </code><code>'name=iptables state=stopped enabled=off'</code>
11.安裝JDK,ambari安裝的過程,可以自動安裝,但是速度比較慢。建議自行安裝。需要在全部節點都安裝
下載下傳JDK(内網位址)
<code>wget http://10.21.xx.xx/deploy/jdk1.7.0_79.tar.gz</code>
安裝JDK,全部節點都要安裝
<code>#tar -xzvf jdk1.7.0_79.tar.gz -C /usr/</code><code>local</code>
添加下面資訊到.bash_profile
<code>export JAVA_HOME=/usr/</code><code>local</code><code>/jdk1.8.0_144 </code>
<code>export JRE_HOME=/usr/</code><code>local</code><code>/jdk1.8.0_144/jre</code>
<code>export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH</code>
<code>export PATH=$JAVA_HOME/bin:$PATH</code>
<code>source /etc/profile</code>
12. 現在才開始正式ambaris安裝
(注意:如果選擇自行安裝jdk,并且後續需要使用kerberos認證的話,還是需要JCE的。不然就無法正常連接配接KDC的。這是我後面遇到問題才發現的。而且oracle官網,隻能下載下傳1.8版本的JCE。1.7及以下,需要metalink賬号才能下載下傳。是以,如果網速可以的情況下,建議直接選擇1、2進行安裝JDK)
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<code>[root@ip-10-21-23-29 ambari]# ambari-server setup</code>
<code>Using python /usr/bin/python</code>
<code>Setup ambari-server</code>
<code>Checking SELinux...</code>
<code>SELinux status </code><code>is</code> <code>'disabled'</code>
<code>Customize </code><code>user</code> <code>account </code><code>for</code> <code>ambari-server daemon [y/n] (n)? </code>
<code>Adjusting ambari-server permissions </code><code>and</code> <code>ownership...</code>
<code>Checking firewall status...</code>
<code>Checking JDK...</code>
<code>[1] Oracle JDK 1.8 + Java Cryptography Extension (JCE) Policy Files 8</code>
<code>[2] Oracle JDK 1.7 + Java Cryptography Extension (JCE) Policy Files 7 <<<<<<<重要</code>
<code>[3] Custom JDK</code>
<code>==============================================================================</code>
<code>Enter choice (1): 3</code>
<code>WARNING: JDK must be installed </code><code>on</code> <code>all</code> <code>hosts </code><code>and</code> <code>JAVA_HOME must be valid </code><code>on</code> <code>all</code> <code>hosts.</code>
<code>WARNING: JCE Policy files are required </code><code>for</code> <code>configuring Kerberos security. If you plan </code><code>to</code> <code>use Kerberos,please make sure JCE Unlimited Strength Jurisdiction Policy Files are valid </code><code>on</code> <code>all</code> <code>hosts.</code>
<code>Path </code><code>to</code> <code>JAVA_HOME: /usr/</code><code>local</code><code>/jdk1.7.0_79</code>
<code>Validating JDK </code><code>on</code> <code>Ambari Server...done.</code>
<code>Completing setup...</code>
<code>Configuring </code><code>database</code><code>...</code>
<code>Enter advanced </code><code>database</code> <code>configuration [y/n] (n)? </code><code>-----如果不希望安裝預設的postgres資料庫,這裡要選Y</code>
<code>Default</code> <code>properties detected. Using built-</code><code>in</code> <code>database</code><code>.</code>
<code>Configuring ambari </code><code>database</code><code>...</code>
<code>Checking PostgreSQL...</code>
<code>Running initdb: This may take up </code><code>to</code> <code>a </code><code>minute</code><code>.</code>
<code>Initializing </code><code>database</code><code>: [ OK ]</code>
<code>About </code><code>to</code> <code>start PostgreSQL</code>
<code>Configuring </code><code>local</code> <code>database</code><code>...</code>
<code>Connecting </code><code>to</code> <code>local</code> <code>database</code><code>...done.</code>
<code>Configuring PostgreSQL...</code>
<code>Restarting PostgreSQL</code>
<code>Extracting system views...</code>
<code>......ambari-admin-2.4.1.0.22.jar</code>
<code>.......</code>
<code>Ambari Server </code><code>'setup'</code> <code>completed successfully.</code>
14. 啟動ambari
<code>[root@ip-10-21-23-29 ambari]# ambari-server start</code>
<code>Starting ambari-server</code>
<code>Ambari Server running </code><code>with</code> <code>administrator </code><code>privileges</code><code>.</code>
<code>Organizing resource files </code><code>at</code> <code>/var/lib/ambari-server/resources...</code>
<code>Ambari </code><code>database</code> <code>consistency </code><code>check</code> <code>started...</code>
<code>No</code> <code>errors were found.</code>
<code>Ambari </code><code>database</code> <code>consistency </code><code>check</code> <code>finished</code>
<code>Server PID </code><code>at</code><code>: /var/run/ambari-server/ambari-server.pid</code>
<code>Server </code><code>out</code> <code>at</code><code>: /data1/log/ambari-server/ambari-server.</code><code>out</code>
<code>Server log </code><code>at</code><code>: /data1/log/ambari-server/ambari-server.log</code>
<code>Waiting </code><code>for</code> <code>server start....................</code>
<code>Ambari Server </code><code>'start'</code> <code>completed successfully.</code>
15. 但是現在,網頁是無法打開的,安裝httpd服務
<code>[root@ip-10-21-23-29 ambari]# service httpd status</code>
<code>httpd: unrecognized service</code>
需要安裝httpd
<code>[root@ip-10-21-23-29 ambari]# yum install httpd</code>
<code>httpd </code><code>is</code> <code>stopped</code>
<code>[root@ip-10-21-23-29 ambari]# service httpd start</code>
<code>Starting httpd: [ OK ]</code>
16. 頁面安裝開始,網上很多人都寫過如何安裝的,我隻是将比較重點的部分截圖
這裡需要選擇前面已經準備好的HTTP連接配接,路徑參考如下
HDP Base URL
http://<web.server>/hdp/HDP/<OS>/2.x/updates/<latest.version>
HDP-UTILS Base URL
http://<web.server>/hdp/HDP-UTILS-<version>/repos/<OS>
17. 填入主機名,一定将完整的主機名填入,包括字尾。不能用IP代替。這裡就要注意/etc/hosts是否都正常解析
<a href="https://s5.51cto.com/oss/201711/13/ea25a111af1b3285bec2ad8bb5a1b10e.png" target="_blank"></a>
18. 安裝ambari的agent,如果遇到失敗,選擇失敗的條目,可以“retry”
<a href="https://s5.51cto.com/oss/201711/13/25ded80a5129df0ba48a0ecb092cd31b.png" target="_blank"></a>
19. 即使成功,下面如果有warning,也需要解決,跳過絕對不是明智的選擇。 我就遇到點問題
<a href="https://s1.51cto.com/oss/201711/13/fa56195515123c790cf14a1c189e2d6c.png" target="_blank"></a>
通過下面指令,關閉THP,然後Rerun checks,確定都解決掉
<code>echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled</code>
<code>echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag</code>
<code>echo </code><code>"transparent_hugepage=never"</code> <code>>> /etc/grub.conf</code>
20. 問題全解決之後,開始安裝
<a href="https://s1.51cto.com/oss/201711/13/8198f71248ac840a3e452b5a5a96e0ac.png" target="_blank"></a>
21. 也許你在想,這麼快就完成了?那你錯了。我被折磨了一周,才見到下面這個界面。而且,你是不是覺得,我的界面過于簡單?是的,我隻部署了zookeeper和HDFS。因為,錯了太多次了。我隻能嘗試從最簡單的開始安裝。減少出問題的機率。
<a href="https://s2.51cto.com/oss/201711/13/72a0c26938700644016c271d764accad.png" target="_blank"></a>
22. 成功之後,可以通過add service的方式,逐漸增加你需要的資源
<a href="https://s2.51cto.com/oss/201711/13/7442f3acc43bed46426df7c41319e597.png" target="_blank"></a>
23. 增加service的過程
<a href="https://s2.51cto.com/oss/201711/13/d4d6a970ce1f1dcb86f59c027897603a.png" target="_blank"></a>
24. 看看吧,這個就是安裝成功的界面。看到它,不容易啊。
<a href="https://s2.51cto.com/oss/201711/13/668768651896cdc2584e00d8e3b6cc4b.png" target="_blank"></a>
下面就和大家抱怨一下Ambari的種種不便吧。
失敗的,基本隻能retry,甚至不能重新再安裝。之前已經安裝的服務,會影響到你下次的安裝。
我由于無法忍受種種失敗,打算換個名字重新安裝,但是上次安裝失敗的軟體還在,無法重新安裝。隻能先解除安裝之前已經安裝的service。
那麼問題來了,Ambari竟然不能解除安裝!不能解除安裝!不能解除安裝! 重新開機服務,重新開機主機,統統無法跳過。依然很執着的停在那個錯誤的頁面。
終于在參考别人的blog之後,找到指令删除的方式
1. 查詢資源
<code>curl -u admin:admin -H “X-Requested-</code><code>By</code><code>: ambari” -X GET http://10.21.23.29:8080/api/v1/clusters/beta_eu/services/</code>
2. 删除資源
<code>curl -u admin:admin -H </code><code>"X-Requested-By: ambari"</code> <code>-X </code><code>DELETE</code> <code>http://10.21.23.29:8080/api/v1/clusters/beta_eu/services/KAFKA</code>
3. 如果删除失敗,先stop在删除
<code>#curl -u admin:admin -H </code><code>"X-Requested-By: ambari"</code> <code>-X </code><code>DELETE</code> <code>http://10.21.23.29:8080/api/v1/clusters/beta_eu/services/APPCONFIGURATION</code>
<code>{</code>
<code> </code><code>"status"</code> <code>: 500,</code>
<code> </code><code>"message"</code> <code>: </code><code>"org.apache.ambari.server.controller.spi.SystemException: An internal system exception occurred: Cannot remove beta_eu/APPCONFIGURATION. One or more host components are in a non-removable state."</code>
4. 停止service
<code>[root@ip-10-21-23-29 ~]# curl -u admin:admin -H </code><code>"X-Requested-By: ambari"</code> <code>-X PUT -d </code><code>'{"RequestInfo":{"context":"Stop Service"},"Body":{"ServiceInfo":{"state":"INSTALLED"}}}'</code> <code>10.21.23.29:8080/api/v1/clusters/beta_eu/services/APPCONFIGURATION</code>
<code>{ </code><code>"href"</code> <code>: </code><code>"http://10.21.23.29:8080/api/v1/clusters/beta_eu/requests/24"</code><code>,</code>
<code> </code><code>"Requests"</code> <code>: {</code>
<code> </code><code>"id"</code> <code>: 24,</code>
<code> </code><code>"status"</code> <code>: </code><code>"Accepted"</code> <code>}</code>
5. 删除service
<code>[root@ip-10-21-23-29 ~]#curl -u admin:admin -H </code><code>"X-Requested-By: ambari"</code> <code>-X </code><code>DELETE</code> <code>http://10.21.23.29:8080/api/v1/clusters/beta_eu/services/APPCONFIGURATION</code>
6. 再次檢查,已經沒有service了
<code>[root@ip-10-21-23-29 ~]# curl -u admin:admin -H “X-Requested-</code><code>By</code><code>: ambari” -X GET http://10.21.23.29:8080/api/v1/clusters/beta_eu/services/</code>
<code>curl: (6) Couldn</code><code>'t resolve host '</code><code>ambari”'</code>
<code> </code><code>"href"</code> <code>: </code><code>"http://10.21.23.29:8080/api/v1/clusters/beta_eu/services/"</code><code>,</code>
<code> </code><code>"items"</code> <code>: [ ]</code>
本文轉自 hsbxxl 51CTO部落格,原文連結:http://blog.51cto.com/hsbxxl/1981411,如需轉載請自行聯系原作者