Ganglia監控Hadoop及Hbase集羣性能(安裝配置)

1 Ganglia簡介

  Ganglia 是 UC Berkeley 發起的一個開源監視項目,設計用於測量數以千計的節點。每臺計算機都運行一個收集和發送度量數據(如處理器速度、內存使用量等)的名爲 gmond 的守護進程。它將從操作系統和指定主機中收集。接收所有度量數據的主機可以顯示這些數據並且可以將這些數據的精簡表單傳遞到層次結構中。正因爲有這種層次結構模式,才使得 Ganglia 可以實現良好的擴展。gmond 帶來的系統負載非常少,這使得它成爲在集羣中各臺計算機上運行的一段代碼,而不會影響用戶性能。

1.1 Ganglia組件

  Ganglia 監控套件包括三個主要部分:gmond,gmetad,和網頁接口,通常被稱爲ganglia-web。

Gmond :是一個守護進程,他運行在每一個需要監測的節點上,收集監測統計,發送和接受在同一個組播或單播通道上的統計信息 如果他是一個發送者(mute=no)他會收集基本指標,比如系統負載(load_one),CPU利用率。他同時也會發送用戶通過添加C/Python模塊來自定義的指標。 如果他是一個接收者(deaf=no)他會聚合所有從別的主機上發來的指標,並把它們都保存在內存緩衝區中。

Gmetad:也是一個守護進程,他定期檢查gmonds,從那裏拉取數據,並將他們的指標存儲在RRD存儲引擎中。他可以查詢多個集羣並聚合指標。他也被用於生成用戶界面的web前端。

Ganglia-web :顧名思義,他應該安裝在有gmetad運行的機器上,以便讀取RRD文件。 集羣是主機和度量數據的邏輯分組,比如數據庫服務器,網頁服務器,生產,測試,QA等,他們都是完全分開的,你需要爲每個集羣運行單獨的gmond實例。

   一般來說每個集羣需要一個接收的gmond,每個網站需要一個gmetad。

圖1 ganglia工作流

  Ganglia工作流如圖1所示:

  左邊是運行在各個節點上的gmond進程,這個進程的配置只由節點上/etc/gmond.conf的文件決定。所以,在各個監視節點上都需要安裝和配置該文件。

  右上角是更加負責的中心機(通常是這個集羣中的一臺,也可以不是)。在這個臺機器上運行這着gmetad進程,收集來自各個節點上的信息並存儲在RRDtool上,該進程的配置只由/etc/gmetad.conf決定。   

  右下角顯示了關於網頁方面的一些信息。我們的瀏覽網站時調用php腳本,從RRDTool數據庫中抓取信息,動態的生成各類圖表。

1.2 Ganglia運行模式(單播與多播)  

  Ganglia的收集數據工作可以工作在單播(unicast)或多播(multicast)模式下,默認爲多播模式。

單播:發送自己收集到的監控數據到特定的一臺或幾臺機器上,可以跨網段。

多播:發送自己收集到的監控數據到同一網段內所有的機器上,同時收集同一網段內的所有機器發送過來的監控數據。因爲是以廣播包的形式發送,因此需要同一網段內。但同一網段內,又可以定義不同的發送通道。

2 環境  

  平臺:ubuntu12.04

  Hadoop: hadoop-1.0.4

  Hbase: hbase-0.94.5

  拓撲:

  圖2 hadoop及hbase拓撲


  軟件安裝:apt-get

3 安裝部署(單播)

3.1 部署方式

  監測節點(gmond):10.82.58.209、10.82.58.211、10.82.58.213(212主機離開了)。

  主節點(gmetad、ganglia-web):10.82.58.211

3.2 安裝

  這裏必須說明一個問題,我是在ubuntu下直接安裝的。因爲涉及到版本問題,hadoop-1.0.4和hbase-0.94.5均支持ganglia3.0和ganglia3.1版本,但是在配置時加載的模塊是不一樣的。所以,我們需要知道安裝的ganglia是什麼版本。

#sudo apt-cache show ganglia-webfrontend ganglia-monitor

圖3 安裝版本信息

  我們可以發現,安裝的版本是ganglia3.1.7,所以是支持的。所以在211這臺主機上安裝ganglia-webfrontend和ganglia-monitor。在其他監視節點上,只需要安裝ganglia-monitor即可。

#sudo apt-get install ganglia-webfrontend ganglia-monitor

  將ganglia的文件鏈接到apache的默認目錄下

#sudoln -s /usr/share/ganglia-webfront /var/www/ganglia

  Ganglia-webfrontend等同與上面所說的gmetad及ganglia-web,同時還會自動幫你安裝apache2和rrdtool,非常方便。

3.3 Ganglia配置

  在各個節點上,都需要配置/etc/gmond.conf,配置相同如下所示:

複製代碼
globals {                      daemonize = yes              #以後臺的方式運行  setuid = yes  user = ganglia              #運行gmond的用戶  debug_level = 0             #調試級別  max_udp_msg_len = 1472        mute = no       #啞巴,本節點將不會再廣播任何自己收集到的數據在網絡上    deaf = no       #聾子,本節點不會再接收任何其他節點廣播的數據包        host_dmax = 0 /*secs */   cleanup_threshold = 300 /*secs */   gexec = no             #是否使用gexec  send_metadata_interval = 10     #節點發送間隔/*secs*/} /* If a cluster attribute is specified, then all gmond hosts are wrapped inside  * of a <CLUSTER> tag.  If you do not specify a cluster tag, then all <HOSTS> will  * NOT be wrapped inside of a <CLUSTER> tag. */ cluster {   name = "hadoop"   #本節點屬於哪個cluster  owner = "unspecified"        #誰是該節點的所有者  latlong = "unspecified"    #在地球上的座標  url = "unspecified" } /* The host section describes attributes of the host, like the location */ host {   location = "unspecified" } /* Feel free to specify as many udp_send_channels as you like.  Gmond    used to only support having a single channel */ udp_send_channel {    #udp包的發送通道  host = 10.82.58.211        #多播,工作在239.2.11.71通道下。單播,則指向主節點,單播模式下也可以配置多個udp_send_channel  port = 8649            #監聽端口  ttl = 1 } /* You can specify as many udp_recv_channels as you like as well. */ udp_recv_channel {  #接受UDP包配置# mcast_join = 239.2.11.71  port = 8649 # bind = 239.2.11.71} 
複製代碼

  請注意send_metadata_interval被設置爲10秒。Ganglia的度量指標從他的元數據間隔發送得到的。元數據包含諸如度量分組,類型等等。假如你重啓了接收的gmond主機,那麼元數據就會丟失,gmond就不知道如何處理度量數據,因此會把他們拋棄。這會導致生成空白的圖表。在組播模式下,gmonds可以和其他任意一臺主機通信,在元數據丟失情況請求重新獲取。但這在單播模式下是不可能的,因此你需要命令gmond定期的發送元數據。

  在主節點上(10.82.58.211)上還需要配置/etc/gmetad.conf,這裏面的名字“hadoop”和上面gmond.conf中應該是一致的。  

data_source "hadoop" 10.82.58.211:8649

3.4 Hadoop配置

  所有hadoop所在的節點,均需要配置hadoop-metrics2.properties,配置如下:

複製代碼
# syntax: [prefix].[source|sink|jmx].[instance].[options]# See package.html for org.apache.hadoop.metrics2 for details*.sink.file.class=org.apache.hadoop.metrics2.sink.FileSink#namenode.sink.file.filename=namenode-metrics.out#datanode.sink.file.filename=datanode-metrics.out#jobtracker.sink.file.filename=jobtracker-metrics.out#tasktracker.sink.file.filename=tasktracker-metrics.out#maptask.sink.file.filename=maptask-metrics.out#reducetask.sink.file.filename=reducetask-metrics.out## Below are for sending metrics to Ganglia## for Ganglia 3.0 support# *.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink30## for Ganglia 3.1 support*.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31*.sink.ganglia.period=10# default for supportsparse is false*.sink.ganglia.supportsparse=true*.sink.ganglia.slope=jvm.metrics.gcCount=zero,jvm.metrics.memHeapUsedM=both*.sink.ganglia.dmax=jvm.metrics.threadsBlocked=70,jvm.metrics.memHeapUsedM=40namenode.sink.ganglia.servers=10.82.58.211:8649datanode.sink.ganglia.servers=10.82.58.211:8649jobtracker.sink.ganglia.servers=10.82.58.211:8649tasktracker.sink.ganglia.servers=10.82.58.211:8649maptask.sink.ganglia.servers=10.82.58.211:8649reducetask.sink.ganglia.servers=10.82.58.211:8649
複製代碼

3.5 Hbase配置


複製代碼
# HBase-specific configuration to reset long-running stats (e.g. compactions)# If this variable is left out, then the default is no expiration.hbase.extendedperiod = 3600# Configuration of the "hbase" context for ganglia# Pick one: Ganglia 3.0 (former) or Ganglia 3.1 (latter)# hbase.class=org.apache.hadoop.metrics.ganglia.GangliaContexthbase.class=org.apache.hadoop.metrics.ganglia.GangliaContext31hbase.period=10hbase.servers=10.82.58.211:8649# Configuration of the "jvm" context for nulljvm.class=org.apache.hadoop.metrics.spi.NullContextWithUpdateThreadjvm.period=10# Configuration of the "jvm" context for file# jvm.class=org.apache.hadoop.hbase.metrics.file.TimeStampingFileContext# jvm.fileName=/tmp/metrics_jvm.log# Configuration of the "jvm" context for ganglia# Pick one: Ganglia 3.0 (former) or Ganglia 3.1 (latter)# jvm.class=org.apache.hadoop.metrics.ganglia.GangliaContextjvm.class=org.apache.hadoop.metrics.ganglia.GangliaContext31jvm.period=10jvm.servers=10.82.58.211:8649# Configuration of the "rpc" context for nullrpc.class=org.apache.hadoop.metrics.spi.NullContextWithUpdateThreadrpc.period=10# Configuration of the "rpc" context for file# rpc.class=org.apache.hadoop.hbase.metrics.file.TimeStampingFileContext# rpc.fileName=/tmp/metrics_rpc.log# Configuration of the "rpc" context for ganglia# Pick one: Ganglia 3.0 (former) or Ganglia 3.1 (latter)# rpc.class=org.apache.hadoop.metrics.ganglia.GangliaContext rpc.class=org.apache.hadoop.metrics.ganglia.GangliaContext31 rpc.period=10 rpc.servers=10.82.58.211:8649# Configuration of the "rest" context for ganglia# Pick one: Ganglia 3.0 (former) or Ganglia 3.1 (latter)# rest.class=org.apache.hadoop.metrics.ganglia.GangliaContext rest.class=org.apache.hadoop.metrics.ganglia.GangliaContext31 rest.period=10 rest.servers=10.82.58.211:8649
複製代碼

4 啓動與檢驗

  先需要重啓hadoop和hbase 。在各個節點上啓動gmond服務,主節點還需要啓動gmetad服務。

#sudo service ganglia-monitor start#sudo service gmetad start

  可以通過10.82.58.211/ganglia來查看。  

圖4 web查看集羣信息

5 參考資料

1、http://ganglia.sourceforge.net/
2、http://linuxjcq.blog.51cto.com/3042600/759008
3、http://cryinstall.com/?p=180
4、https://wiki.freebsdchina.org/howto/g/gangliainit
5、http://abloz.com/2012/09/19/ganglia-monitoring-hadoop.html
6、
http://www.ibm.com/developerworks/wikis/display/wikiptype/ganglia



源網址:http://www.cnblogs.com/wukenaihe/archive/2013/03/21/2972837.html


wzw0114

2013.07.30

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章