使用Ganglia對hadoop進行監控
Ganglia是一個監控伺服器,叢集的開源軟體,能夠用曲線圖表現最近一個小時,最近一天,最近一週,最近一月,最近一年的伺服器或者叢集的cpu負載,記憶體,網路,硬碟等指標。
Ganglia的強大在於:ganglia服務端能夠通過一臺客戶端收集到同一個網段的所有客戶端的資料,ganglia叢集服務端能夠通過一臺服務端收集到它下屬的所有客戶端資料。這個體系設計表示一臺伺服器能夠通過不同的分層能夠管理上萬臺機器。這個功能是其他mrtg,nagios,cacti所不能比擬。
因為hadoop的支援問題,我們推薦安裝ganglia3.0.3。
作業系統環境:CentOS5.2
叢集環境:
namenode 192.168.75.144
datanode1 192.168.75.145
datanode2 192.168.75.146
ganglia的服務端安裝在namenode上
下載安裝包,清單如下:
rrdtool-1.0.50-3.el5.rf.x86_64.rpm
ganglia-web-3.0.3-1.noarch.rpm
ganglia-gmetad-3.0.3-1.rhel4.x86_64.rpm
ganglia-gmond-3.0.3-1.rhel4.x86_64.rpm
一、安裝客戶端
#rpm -Uvh ganglia-gmond-3.0.3-1.rhel4.x86_64.rpm
安裝完畢以後gmond預設就啟動了,稍後可以使用service gmond start|stop|restart等控制啟動,停止,重啟等功能;
在/etc/下會產生一個gmond.conf的配置檔案。
在這個配置檔案中先找到setuid = yes,改成setuid =no;然後找到在cluster中的name,改成name ="hadoop-test";
其他都不用改了,儲存以後重啟gmond服務;
二、安裝伺服器端
1.首先安裝rrdtool
#rpm -Uvh rrdtool-1.0.50-3.el5.rf.x86_64.rpm
安裝以後執行rrdtool,能夠顯示版本號等資訊說明rrdtool安裝完畢
建立rrd資料儲存的資料夾, 修改屬性擁有者為: "nobody":
#mkdir /var/lib/ganglia/rrds
#chown nobody:nobody /var/lib/ganglia/rrds
2.安裝gmetad
#rpm -Uvh ganglia-gmetad-3.0.3-1.rhel4.x86_64.rpm
安裝過程中可能會提示依賴ruby 等包,一路使用yum install ruby安裝其他需要的包
安裝完成後gmetad服務預設就啟動了,稍後可以使用service gmetad start|stop|restart等控制啟動,停止,重啟等功能;
在/etc/下會產生一個gmetad.conf的配置檔案。
在這個配置檔案中主要是增加一些datasource,即被監控的機器的列表。
在我的例子中是
data_source "hadoop-test" hadoop-namenode:8649 hadoop-datanode1:8649 hadoop-datanode2:8649
其中"hadoop-test"是叢集名稱,呆會要和客戶端的gmond中配置的name要一致,後面多個機器名的話用空格隔開就可以了
配置過配置檔案以後,需要重啟gmetad來應用配置。
3.安裝web
#rpm -Uvh ganglia-web-3.0.3-1.noarch.rpm
安裝以後會在/var/www/html下面生成一個ganglia 的資料夾。
現在啟動apache
#service httpd start
啟動成功後,通過訪問http://hadoop-namenode/ganglia就可以看到ganglia的首頁了。
另外要通過yum install php-gd安裝一個外掛,如果沒有這個外掛,首頁左下角會有一個餅圖無法顯示,也並不太影響使用。
三、配置hadoop檔案
找到hadoop根目錄下的conf資料夾下的hadoop-metrics.properties檔案
改成如下內容
# Configuration of the "dfs" context for ganglia
dfs.class=org.apache.hadoop.metrics.ganglia.GangliaContext
dfs.period=10
dfs.servers=239.2.11.71:8649
# Configuration of the "mapred" context for ganglia
mapred.class=org.apache.hadoop.metrics.ganglia.GangliaContext
mapred.period=10
mapred.servers=239.2.11.71:8649
# Configuration of the "jvm" context for ganglia
jvm.class=org.apache.hadoop.metrics.ganglia.GangliaContext
jvm.period=10
jvm.servers=239.2.11.71:8649
注:239.2.11.71這個是ganglia用的多播的地址,不需要改成gmetad的伺服器地址
如果需要監控hbase的話,也一樣找到hbase目錄下的這個檔案,改法一樣就不重複了。
改完以後重啟hadoop服務