1. 程式人生 > >Ganglia監控Hadoop叢集的安裝部署

Ganglia監控Hadoop叢集的安裝部署

一、 安裝環境

  • Ubuntu server 12.04 
  • 安裝gmetad的機器:192.168.52.105
  • 安裝gmond的機器:192.168.52.31,192.168.52.32,192.168.52.33,192.168.52.34,192.168.52.35,192.168.52.36,192.168.52.37,192.168.52.38,192.168.52.105
  • 瀏覽監控web頁面的機器:192.168.52.105

二、 介紹

Ganglia 監控套件包括三個主要部分:gmond,gmetad,和網頁介面,通常被稱為ganglia- web。
  • gmond 是一個守護程序,他執行在每一個需要監測的節點上,收集監測統計,傳送和接受在同一個組播或單播通
    道上的統計資訊。
  • gme tad 也是一個守護程序,他定期檢查gmonds ,從那裡拉取資料,並將他們的指標儲存在RRD儲存引擎中。它可以查詢多個叢集並聚合指標。RRD也被用於生成使用者介面的web前端。
  •  ganglia- web 顧名思義,他應該安裝在有gmetad執行的機器上,以便讀取RRD檔案。
一般來說一個叢集的每臺機器上都需要安裝gmond,只要負責展示web介面的機器安裝了gmetad即可。

三、 安裝

1.apt-get方式安裝

首先找一個結點當作web顯示的結點,使用以下命令一鍵安裝:
apt-get -y install ganglia-monitor ganglia-webfrontend 
安裝了ganglia-webfrontend就相當於同時安裝了gmetad、ganglia-web和rrdtool等。
以上安裝的版本都是3.1.7,因為ubuntu官方源裡面只支援到ganglia-webfrontend-3.1.7,起中使用的Ganglia Web Frontend版本也是3.1.7,版本太低,顯示的介面很不友好,因此後面的文章我會介紹如何手動安裝Ganglia Web Frontend version 3.5.7(目前最高版本已經到3.6)。如果為了方便,對於監控的介面要求不高的話,又圖省事,可以用上述命令一鍵安裝。
除了安裝ganglia-webfrontend的主機,其他主機只需要安裝ganglia-monitor即可。

2.連結到web伺服器

安裝ganglia-webfrontend的時候就已經安裝了Apache Web Server,Ganglia-webfrontend預設安裝的位置是/usr/share/ganglia-webfront,現在還不能通過瀏覽器訪問Ganglia監控介面,需要執行以下命令將將ganglia的檔案連結到apache的預設目錄下。 ln -s /usr/share/ganglia-webfront /var/www/ganglia

四、 配置

1.單播與組播

在進行Ganglia叢集配置之前,首先要搞清楚單播和組播。
  • 單播:可以跨網段傳播,只將資訊傳送給指定的機器。要配置成為單播你應該指定一個(或者多個)接受的主機。
  • 組播:在機器所處的網段中傳送廣播,傳送給位於同一網段的所有機器。如果你正在使用組播傳輸,那麼你沒必要改變任何東西,因為這是Ganglia包安裝預設的。唯一要做的就是把gmetad指向一個或幾個執行著gmo nd的主機。沒有必要列出每一個單個主機,因為gmo nd被設定為接受模式時會包含所有主機的列表以及整個叢集的統計資訊。
關於單播和組播更詳細的介紹和相關配置請參照:Ganglia快速開始嚮導(翻譯自官方wiki),或者直接檢視官方wiki

2.叢集配置

我的Ganglia監控叢集使用了單播模式。所有的配置都在/etc/ganglia目錄下,在每個節點上都要配置/etc/ganglia/gmond.conf. 紅色字型為修改項。 globals {
  daemonize = yes
  setuid = yes
  user = root /*執行Ganglia的使用者*/
  debug_level = 0
  max_udp_msg_len = 1472
  mute = no
  deaf = no
  host_dmax = 120 /*secs */
  cleanup_threshold = 300 /*secs */
  gexec = no
  send_metadata_interval = 15 /*傳送資料的時間間隔*/
}


cluster {
  name = "hadoop_hf" /*叢集名稱*/
  owner = "root" /*執行Ganglia的使用者*/

  latlong = "unspecified"
  url = "unspecified"
}


udp_send_channel {
#  mcast_join = 192.168.52.105 /*註釋掉組播*/
  host = 192.168.52.105 /*傳送給安裝gmetad的機器*/

  port = 8649
  ttl = 1
}

五、 啟動Ganglia

使用apt-get方式安裝的Ganglia,可以直接用service方式啟動。
  • service ganglia-monitor start (每臺機器都需要啟動)
  • service gmetad start (在安裝了ganglia-webfrontend的機器上啟動)

六、 檢驗

登入瀏覽器檢視:http://192.168.52.105/ganglia,如果Hosts up為9即表示安裝成功。 若安裝不成功,有幾個很有用的除錯命令:
  • 以除錯模式啟動gmetadgmetad -d 9 
  • 檢視gmetad收集到的XML檔案:telnet 192.168.52.105 8649 

七、 Ganglia-web的安裝

因為3.1.7版本的Ganglia-web實在太醜,因此我解除安裝了ganglia-webfrontend,然後單獨安裝了gmetad後又安裝了新版的Ganglia-web-3.5.10. 按照官方的說明,首先將tar.gz檔案解壓,然後進入解壓後的目錄,修改Makefile檔案中的如下四個配置:
# Location where gweb should be installed to (excluding conf, dwoo dirs).
GDESTDIR = /var/www/ganglia


# Gweb statedir (where conf dir and Dwoo templates dir are stored)
GWEB_STATEDIR = /var/lib/ganglia


# Gmetad rootdir (parent location of rrd folder)
GMETAD_ROOTDIR = /var/lib/ganglia


APACHE_USER = root(切忌後面不要有空格)
重新啟動gmetad。登入http://192.168.52.105/ganglia後如果配置有問題可以根據網頁中的報錯修改。一般會出現檔案讀寫許可權錯誤,沒有rrd目錄就需要自己建立,conf和cache目錄的許可權需要修改為777。 監控介面截圖:

八、 監控Hadoop叢集

修改Hadoop的配置檔案/etc/hadoop/conf/hadoop-metrics.properties,根據檔案中的說明,修改三處: dfs.class=org.apache.hadoop.metrics.ganglia.GangliaContext31
dfs.period=30
dfs.servers=192.168.52.105:8649
mapred.class=org.apache.hadoop.metrics.ganglia.GangliaContext31
mapred.period=30
mapred.servers=192.168.52.105:8649
jvm.class=org.apache.hadoop.metrics.ganglia.GangliaContext
jvm.class=org.apache.hadoop.metrics.ganglia.GangliaContext31
jvm.period=30
jvm.servers=192.168.52.105:8649
所有的servers都修改為安裝為gmetad的機器IP。 重啟Hadoop datanode:service hadoop-datanode restart 重啟gmond:/usr/sbin/gmond restart