天天看點

64位centos上用ganglia-3.6.0監控hadoop-2.2.0叢集

64位centos上用ganglia-3.6.0監控hadoop-2.2.0叢集

參考:

https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/Power%20Systems/page/Ganglia 

http://blog.csdn.net/iAm333/article/details/16358509

Ganglia是 UCBerkeley 發起的一個開源監視項目,設計用于測量數以千計的節點。每台計算機都運作一個gmond 的守護程序用于收集和發送度量資料(如處理器速度、記憶體使用量等)。gmetad程序接收gmond程序收集的資料并通過php腳本動态的生成圖表表示。gmond 帶來的系統負載非常少,這使得它成為在叢集中各台計算機上運作的一段代碼,而不會影響使用者性能。

一、Ganglia元件

Ganglia 監控套件包括三個主要部分:gmond,gmetad,和網頁接口。

Gmond :是一個守護程序,運作在每一個需要監測的節點上,收集監測統計,發送和接受在同一個多點傳播或單點傳播通道上的統計資訊 。如果他是一個發送者(mute=no)他會收集基本名額,比如系統負載(load_one),CPU使用率。他同時也會發送使用者通過添加C/Python子產品來自定義的名額。 如果他是一個接收者(deaf=no)他會聚合所有從别的主機上發來的名額,并把它們都儲存在記憶體緩沖區中。

Gmetad:也是一個守護程序,他定期檢查gmonds,從那裡拉取資料,并将他們的名額存儲在RRD存儲引擎中。他可以查詢多個叢集并聚合名額。他也被用于生成使用者界面的web前端。

Ganglia-web:顧名思義,他應該安裝在有gmetad運作的機器上,以便讀取RRD檔案。 叢集是主機和度量資料的邏輯分組,比如資料庫伺服器,網頁伺服器,生産,測試,QA等,他們都是完全分開的,你需要為每個叢集運作單獨的gmond執行個體。

Ganglia工作流1如下圖所示((收集資料的每個節點有一個gmond,整個叢集隻有一個gmetad,且gmond都作為發送方):

64位centos上用ganglia-3.6.0監控hadoop-2.2.0叢集

左邊是運作在各個節點上的gmond程序,這個程序的配置隻由節點上gmond.conf的檔案決定。是以,在各個監視節點上都需要安裝和配置該檔案。

右上角是負責的中心機(通常是這個叢集中的一台,也可以不是)。在這個台機器上運作這着gmetad程序,收集來自各個節點上的資訊并存儲在rrdtool上,該程序的配置隻由gmetad.conf決定。   

右下角顯示了關于網頁方面的一些資訊。我們的浏覽網站時調用php腳本,從RRDTool資料庫中抓取資訊,動态的生成各類圖表。

Ganglia工作流2如下圖所示(收集資料的每個節點有一個gmond,整個叢集有不止一個gmetad,但一般需要有一個中央gmetad收集所有資料,用php腳本生成graph。其中gmond不都作為發送方,每個邏輯分組中可能有一個是接收方,用于接收其它gmond發送的資料存儲在緩存中)

64位centos上用ganglia-3.6.0監控hadoop-2.2.0叢集

二、安裝依賴

注:建議使用超級使用者安裝

1.   yum install –y gcc gcc-c++ libpng freetype zlib libdbi apr*  libxml2-devel pkg-config g pixman pango pango-devel freetye-devel fontconfig cairo cairo-devel libart_lgpl libart_lgpl-devel pcre* rrdtool*  

三、安裝expat依賴

1.   wget http://jaist.dl.sourceforge.net/project/expat/expat/2.1.0/expat-2.1.0.tar.gz  

2.   tar -xf expat-2.1.0.tar.gz  

3.   cd expat-2.1.0  

4.   ./configure --prefix=/usr/local/expat  

5.   make  

6.   make install  

對于64位作業系統,需要手動的拷貝下動态連結庫到lib64下

1.      mkdir /usr/local/expat/lib64  

2.     cp -a /usr/local/expat/lib  

5.     debug_level = 0  

6.     max_udp_msg_len = 1472  

7.     mute = no  

8.     deaf = no  

9.     host_dmax = 120   

10.    cleanup_threshold = 300   

11.    gexec = no  

12.    send_metadata_interval = 15   

13.  }  

14.    

15.  cluster {  

16.    name = "hadoop_username"   

17.    owner = "username"   

18.    latlong = "unspecified"  

19.    url = "unspecified"  

20.  }  

21.    

22.  udp_send_channel {  

23.  #  mcast_join =  239.2.11.71    

24.    host = 10.3.1.76  

25.    port = 8659  

26.    ttl = 1  

27.  }  

28.    

29.  udp_recv_channel {  #接受UDP包配置  

30.  # mcast_join = 239.2.11.71  

31.    port = 8659   

32.  # bind = 239.2.11.71  

33.  }  

八、服務端的WEB配置

PHP程式需要依賴Apache來運作,是以需要安裝如下依賴

1.   # yum -y install php httpd   

2.   # service httpd start //啟動httpd 服務  

九、測試安裝是否成功 

1.   # vi /var/www/html/index.php   

輸入: 

1.   <?php   

2.   phpinfo();   

3.   ?>   

儲存,然後浏覽器 master/index.php 

正常是看到php的資訊。 

1.   #cd /home/ruifeng.shan  

2.   #wget http://jaist.dl.sourceforge.net/project/ganglia/ganglia-web/3.5.10/ganglia-web-3.5.10.tar.gz  

3.   #tar -xf ganglia-web-3.5.10.tar.gz  

4.   #cd ganglia-web-3.5.10  

5.   #make install  

開啟httpd服務

1.   #service httpd restart  

使用http://master/ganglia檢視對應的ganglia資訊。

十、hadoop配置 

需要配置hadoop-2.2.0/etc/hadoop/目錄下的hadoop-metrics.properties和hadoop-metrics2.properties檔案。

其中,hadoop-metrics.properties配置如下(注意端口号的更改):

1.        #Configuration of the "dfs" context for null

2.        dfs.class=org.apache.hadoop.metrics.spi.NullContext

3.         

4.        #Configuration of the "dfs" context for file

5.        #dfs.class=org.apache.hadoop.metrics.file.FileContext

6.        #dfs.period=10

7.        #dfs.fileName=/tmp/dfsmetrics.log

8.         

9.        #Configuration of the "dfs" context for ganglia

10.    # Pickone: Ganglia 3.0 (former) or Ganglia 3.1 (latter)

11.     dfs.class=org.apache.hadoop.metrics.ganglia.GangliaContext

12.     dfs.class=org.apache.hadoop.metrics.ganglia.GangliaContext31

13.     dfs.period=10

14.     dfs.servers=10.3.1.76:8659

15.     

16.    #Configuration of the "mapred" context for null

17.    mapred.class=org.apache.hadoop.metrics.spi.NullContext

18.     

19.    #Configuration of the "mapred" context for file

20.    #mapred.class=org.apache.hadoop.metrics.file.FileContext

21.    #mapred.period=10

22.    #mapred.fileName=/tmp/mrmetrics.log

23.     

24.    #Configuration of the "mapred" context for ganglia

25.    # Pickone: Ganglia 3.0 (former) or Ganglia 3.1 (latter)

26.     mapred.class=org.apache.hadoop.metrics.ganglia.GangliaContext

27.     mapred.class=org.apache.hadoop.metrics.ganglia.GangliaContext31

28.     mapred.period=10

29.     mapred.servers=10.3.1.76:8659

30.     

31.    # Configurationof the "jvm" context for null

32.    #jvm.class=org.apache.hadoop.metrics.spi.NullContext

33.     

34.    #Configuration of the "jvm" context for file

35.    jvm.class=org.apache.hadoop.metrics.file.FileContext

36.    jvm.period=10

37.    jvm.fileName=/tmp/jvmmetrics.log

38.     

39.    #Configuration of the "jvm" context for ganglia

40.     jvm.class=org.apache.hadoop.metrics.ganglia.GangliaContext

41.     jvm.class=org.apache.hadoop.metrics.ganglia.GangliaContext31

42.     jvm.period=10

43.     jvm.servers=10.3.1.76:8659

44.     

45.    #Configuration of the "rpc" context for null

46.    rpc.class=org.apache.hadoop.metrics.spi.NullContext

47.     

48.    #Configuration of the "rpc" context for file

49.    rpc.class=org.apache.hadoop.metrics.file.FileContext

50.    rpc.period=10

51.    rpc.fileName=/tmp/rpcmetrics.log

52.     

53.    #Configuration of the "rpc" context for ganglia

54.     rpc.class=org.apache.hadoop.metrics.ganglia.GangliaContext

55.     rpc.class=org.apache.hadoop.metrics.ganglia.GangliaContext31

56.     rpc.period=10

57.     rpc.servers=10.3.1.76:8659

58.     

59.     

60.    #Configuration of the "ugi" context for null

61.    ugi.class=org.apache.hadoop.metrics.spi.NullContext

62.     

63.    #Configuration of the "ugi" context for file

64.    #ugi.class=org.apache.hadoop.metrics.file.FileContext

65.    #ugi.period=10

66.    #ugi.fileName=/tmp/ugimetrics.log

67.     

68.    #Configuration of the "ugi" context for ganglia

69.     ugi.class=org.apache.hadoop.metrics.ganglia.GangliaContext

70.     ugi.class=org.apache.hadoop.metrics.ganglia.GangliaContext31

71.     ugi.period=10

72.     ugi.servers=10.3.1.76:8659

hadoop-metrics2.properties檔案配置如下:

1.        #*.sink.file.class=org.apache.hadoop.metrics2.sink.FileSink

2.        #default sampling period, in seconds

3.        #*.period=10

4.         

5.        # Thenamenode-metrics.out will contain metrics from all context

6.        #namenode.sink.file.filename=namenode-metrics.out

7.        #Specifying a special sampling period for namenode:

8.        #namenode.sink.*.period=8

9.         

10.    #datanode.sink.file.filename=datanode-metrics.out

11.     

12.    # thefollowing example split metrics of different

13.    #context to different sinks (in this case files)

14.    #jobtracker.sink.file_jvm.context=jvm

15.    #jobtracker.sink.file_jvm.filename=jobtracker-jvm-metrics.out

16.    #jobtracker.sink.file_mapred.context=mapred

17.    #jobtracker.sink.file_mapred.filename=jobtracker-mapred-metrics.out

18.     

19.    #tasktracker.sink.file.filename=tasktracker-metrics.out

20.     

21.    #maptask.sink.file.filename=maptask-metrics.out

22.     

23.    #reducetask.sink.file.filename=reducetask-metrics.out

24.     

25.    *.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31 

26.    *.sink.ganglia.period=10 

27.      

28.    *.sink.ganglia.slope=jvm.metrics.gcCount=zero,jvm.metrics.memHeapUsedM=both 

29.    *.sink.ganglia.dmax=jvm.metrics.threadsBlocked=70,jvm.metrics.memHeapUsedM=40 

30.      

31.    namenode.sink.ganglia.servers=10.3.1.76:8659 

32.    resourcemanager.sink.ganglia.servers=10.3.1.76:8659 

33.      

34.    datanode.sink.ganglia.servers=10.3.1.76:8659   

35.    nodemanager.sink.ganglia.servers=10.3.1.76:8659   

36.        

37.    maptask.sink.ganglia.servers=10.3.1.76:8659

38.    reducetask.sink.ganglia.servers=10.3.1.76:8659

十一、分發新的hadoop配置、bashrc和ganglia到叢集節點

1.      #!/bin/sh

2.      #

3.       scphadoop/etc/hadoop/hadoop-metrics.properties [email protected]:~/hadoop/etc/hadoop/

4.       scphadoop/etc/hadoop/hadoop-metrics.properties [email protected]:~/hadoop/etc/hadoop/

5.       scphadoop/etc/hadoop/hadoop-metrics.properties [email protected]:~/hadoop/etc/hadoop/

6.        

7.       scphadoop/etc/hadoop/hadoop-metrics2.properties [email protected]:~/hadoop/etc/hadoop/

8.       scphadoop/etc/hadoop/hadoop-metrics2.properties [email protected]:~/hadoop/etc/hadoop/

9.       scphadoop/etc/hadoop/hadoop-metrics2.properties [email protected]:~/hadoop/etc/hadoop/

10.   

11.  ##restart hadoop

12.  stop-all.sh> /dev/null 2>&1

13.  start-all.sh> /dev/null 2>&1

14.   

15.  scp -rtools/ganglia [email protected]:~/tools

16.  scp -rtools/ganglia [email protected]:~/tools

17.  scp -rtools/ganglia [email protected]:~/tools

18.   

19.  scp.bashrc [email protected]:~/

20.  scp.bashrc [email protected]:~/

21.  scp.bashrc [email protected]:~/

22.   

23.  #gmond--debug=100  > /dev/null  2>&1

24.  ps -ef|grep "username.*gmond$"|awk '{print $2}'|xargs kill -9

25.  gmond

26.  echo"gmond 76 started!"

27.   

28.  ssh [email protected]> /dev/null 2>&1 << eeooff

29.  source~/.bashrc

30.  ps -ef|grep "username.*gmond$"|awk '{print $2}'|xargs kill -9

31.  #gmond--debug=100

32.  gmond

33.  exit

34.  eeooff

35.  echo"gmond 77 started!"

36.   

37.  ssh [email protected]> /dev/null 2>&1 << eeooff

38.  source~/.bashrc

39.  ps -ef|grep "username.*gmond$"|awk '{print $2}'|xargs kill -9

40.  #gmond--debug=100

41.  gmond

42.  exit

43.  eeooff

44.  echo"gmond 78 started!"

45.   

46.  ssh [email protected]> /dev/null 2>&1 << eeooff

47.  source~/.bashrc

48.  ps -ef|grep "username.*gmond$"|awk '{print $2}'|xargs kill -9

49.  #gmond--debug=100

50.  gmond

51.  exit

52.  eeooff

53.  echo"gmond 79 started!"

 十二、檢視監控結果

打開浏覽器輸入http://10.3.1.76/ganglia即可看到由PHP動态生成的監控狀态圖表:

64位centos上用ganglia-3.6.0監控hadoop-2.2.0叢集
64位centos上用ganglia-3.6.0監控hadoop-2.2.0叢集
64位centos上用ganglia-3.6.0監控hadoop-2.2.0叢集

繼續閱讀