作者:楊鑫奇
前言
做大數據相關的后端開發工作一年多來,隨着Hadoop社區的不斷發展,也在不斷嘗試新的東西,本文着重來講解下Ambari,這個新的Apache的項目,旨在讓大家能夠方便快速的配置和部署Hadoop生態圈相關的組件的環境,並提供維護和監控的功能.
作為新手,我講講我自己的學習經歷,剛剛開始學習的時候,當然最簡單的 Google 下Hadoop ,然后下載相關的包,在自己的虛擬機(CentOS 6.3) 上安裝一個單機的Hadoop版本用來做測試,寫幾個測試類,然后做下CRUD測試之類的,跑跑Map/Reduce的測試,當然這個時候對於Hadoop還不是很了解,不斷的看別人的文章,了解下整體的架構,自己所做的就是修改conf下的幾個配置文件,讓Hadoop能夠正常的跑起來,這個時候幾種在修改配置上,這個階段之后,又用到了HBase,這個Hadoop生態圈的另外一個產品,當然還是修改配置,然后 start-all.sh , start-hbase.sh 把服務起起來,然后就是修改自己的程序,做測試,隨着用Hbase 學了下 Zookeeper 和Hive等, 接着過了這個操作階段了之后,開始研究Hadoop2.0看了 董的博客 的相關文章,還有CSDN上很多大牛的文章了之后, 算是對Hadoop的生態圈整體有一些了解,介於自己在公司所承擔的開發所涉及到相關的技術僅僅就這些.但是作為一個愛好探索的人,是否想多了解下呢,它的性能怎么樣? 它是具體如何運作的? 看大公司的那些PPT,人家(淘寶等大公司)動不動就是幾十個,幾百個,乃至幾千個節點,人家是如何管理的,性能是怎么樣的?看着PPT里面的那些性能測試的曲線,你是否也能夠詳細的了解,並且對自己的項目進行性能調優呢? 我貌似找到答案了,那就是 Ambari , 由 HortonWorks 開發的一個Hadoop相關的項目,具體可以上官方去了解.
了解Hadoop生態圈
現在我們經常看到的一些關鍵字有: HDFS,MapReduce,HBase,Hive,ZooKeeper,Pig,Sqoop,Oozie,Ganglia,Nagios,CDH3,CDH4,Flume,Scribe,Fluented,HttpFS等等,其實應該還有更多,Hadoop生態圈現在發展算是相當繁榮了,而在這些繁榮的背后又是誰在推動的呢? 讀過Hadoop歷史的朋友可能知道,Hadoop最早是始於Yahoo,但是現在主要是由 HortonWorks 和 Cloudera
這2家公司在維護者,大部分的commiter 都屬於這2家公司,所以現在市面上看到的主要有2個版本,CDH系列,和社區版, 我最早用的是社區版本,后來換到CDH3,現在又換回社區版,因為有Ambari.當然,用什么和不用什么,只要自己的技術到家,還是都能修改的跑的正常的.這里就不多說了. 講了這么多廢話了,開始講 Ambari安裝吧.
開始部署
首先了解下Ambari, 項目地址在:http://incubator.apache.org/ambari/
安裝文檔在: http://incubator.apache.org/ambari/1.2.2/installing-hadoop-using-ambari/content/index.html
HortonWorks的人寫的一篇介紹安裝的文章我翻譯了下: http://www.cnblogs.com/scotoma/archive/2013/05/18/3085040.html 安裝的時候請大家先看下安裝文檔吧,安裝文檔必須認真看,結合自己當前所使用的系統版本,配置不同的源,而且安裝過程中需要的時間相對比較長,所以需要認真的做好安裝文檔的每個步驟. 這里我就說我遇到的一些問題.
以下說說我自己的安裝過程.
機器准備:
我的測試環境采用 9 台 HP 的爛機器,分別是 cloud100 - cloud108 , cloud108做為管理節點.
Ambari安裝的環境路徑:
各台機器的安裝目錄:
/usr/lib/hadoop
/usr/lib/hbase
/usr/lib/zookeeper
/usr/lib/hcatalog
/usr/lib/hive
Log路徑, 這里需要看出錯信息都可以在目錄下找到相關的日志
/var/log/hadoop
/var/log/hbase
配置文件的路徑
/etc/hadoop
/etc/hbase
/etc/hive
HDFS的存儲路徑
/hadoop/hdfs
安裝過程需要注意的點:
1, 安裝的時候,需要做好每台機器的ssh免密碼登陸,這個之前的文章 http://www.cnblogs.com/scotoma/archive/2012/09/18/2689902.html 中提到了,做好之后,從 管理節點到各個集群節點之間,都能使用這個登陸.
2, 如果你的機器之前安裝過 Hadoop的相關服務,特別是Hbase 里面配置了 HBASE_HOME 的環境變量,需要 unset掉, 這個環境變量會影響,因為我之前把這些路徑放到 /etc/profile 里面導致影響了HBase,因為Ambari安裝的路徑和你之前安裝的可能不一樣.
3,在服務選擇頁面的時候, NameNode 和 SNameNode 需要布置在一起, 我之前嘗試做 HA 而把他們分開,但是SNameNode一直起不來,導致整個啟動失敗,接下來時間需要花在HA上.
4. JobTrakcer 不和Namenode在一起也會導致 啟動不起來.
5. Datanode的節點 不能少於 Block replication 中數, 基本都是需要 >= 3.
6. Confirm Hosts 的時候,需要注意里面的 Warning 信息,把相關的Warning都處理掉,有一些Warning會導致安裝出錯.
7. 記住安裝中所新建的用戶,接下來需要用到這些用戶.
8. Hive和HBase Master 部署在同一個節點,這里當然你也可以分開. 設置好后就開始安裝了.
9.如果安裝失敗的情況下,如何重新安裝.
首先,先刪除掉系統已經安裝的文件相關的目錄,
sh file_cp.sh cmd "rm -rf /usr/lib/hadoop && rm -rf /usr/lib/hbase && rm -rf /usr/lib/zookeeper"
sh file_cp.sh cmd "rm -rf /etc/hadoop && rm -rf /etc/hbase && rm -rf /hadoop && rm -rf /var/log/hadoop"
sh file_cp.sh cmd "rm -rf /etc/ganglia && rm -rf /etc/hcatalog && rm -rf /etc/hive && rm -rf /etc/nagios && rm -rf /etc/sqoop && rm -rf /var/log/hbase && rm -rf /var/log/nagios && rm -rf /var/log/hive && rm -rf /var/log/zookeeper && rm -rf /var/run/hadoop && rm -rf /var/run/hbase && rm -rf /var/run/zookeeper "
再在Yum remove 掉安裝的相關的包.
sh file_cp.sh cmd "yum -y remove ambari-log4j hadoop hadoop-lzo hbase hive libconfuse nagios sqoop zookeeper"
我這里使用到了自己寫的Shell,方便在多台機器之間執行命令:
https://github.com/xinqiyang/opshell/tree/master/hadoop
Reset下Ambari-Server
ambari-server stop
ambari-server reset
ambari-server start
10.注意時間的同步,時間問題會導致regionserver起不來
11. iptables 需要關閉,有的時候可能機器會重新啟動,所以不單單需要 service stop 也需要chkconfig 關閉掉.
最后安裝完成后,登陸地址查看下服務的情況:
http://管理節點ip:8080 , 比如我這里的: http://192.168.1.108:8080/ 登陸之后,需要設置之前在安裝Ambari-server時候輸入的賬號和密碼,進入
查看 ganglia的監控
查看 nagios 的監控
測試
安裝完成后,看着這些都正常了,是否需要自己驗證一下呢? 不過基本跑了冒煙測試后,正常的話,基本還是正常的,但是我們自己也得來操作下吧.
驗證HDFS
驗證Map/Reduce
驗證HBase
驗證Hive
總結
到這里,相關的 hadoop 及 hbase 及hive 的相關配置就都配置完成了,接下來需要做一些壓力測試.還有其他方面的測試, 對於Ambari帶的是 HortonWorks 打包的rpm版本的 Hadoop相關的源碼,所以這里可能會和其他的版本有一些不同,但是作為開發環境來說,暫時還是沒有很多大的影響的,但是現在還沒有在生產上使用, 所以也不管說如何的穩定,接下來我會在開發項目的過程中,將所遇到的Bug給列出來. 總體來說Ambari還是很值得使用的,畢竟能夠減少很多不必要的配置時間,而且相對在單機環境下, 在集群環境下更能貼近生產做一些相關的性能測試和調優測試等等,而且配置的ganglia和nagios的監控也能夠發布的讓我們查看到集群相關的數據,總體來說還是推薦使用的,新東西有Bug是在所難免的,但是在用的過程中我們會不斷的完善. 接下來如果有時間,會對Ambariserver的功能進行擴展,添加諸如redis/nginx之類的常用的高性能模塊的監控選項. 這個有時間在弄了. 總之,歡迎使用Ambari.
//update:
最近遇到Ambari的一些問題:
1.在自定義里面開啟了 append選項后,還是依舊無法append.