64位centos上用ganglia-3.6.0监控hadoop-2.2.0集群

来源:互联网 发布:javascript 取2位小数 编辑:程序博客网 时间:2024/04/30 21:53

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都作为发送方):


左边是运行在各个节点上的gmond进程,这个进程的配置只由节点上gmond.conf的文件决定。所以,在各个监视节点上都需要安装和配置该文件。

右上角是负责的中心机(通常是这个集群中的一台,也可以不是)。在这个台机器上运行这着gmetad进程,收集来自各个节点上的信息并存储在rrdtool上,该进程的配置只由gmetad.conf决定。   

右下角显示了关于网页方面的一些信息。我们的浏览网站时调用php脚本,从RRDTool数据库中抓取信息,动态的生成各类图表。

Ganglia工作流2如下图所示(收集数据的每个节点有一个gmond,整个集群有不止一个gmetad,但一般需要有一个中央gmetad收集所有数据,用php脚本生成graph。其中gmond不都作为发送方,每个逻辑分组中可能有一个是接收方,用于接收其它gmond发送的数据存储在缓存中)


二、安装依赖

注:建议使用超级用户安装

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/* /usr/local/expat/lib64/  

四、安装confuse

1.   wget http://ftp.twaren.net/Unix/NonGNU//confuse/confuse-2.7.tar.gz  

2.   tar -xf confuse-2.7.tar.gz  

3.   cd confuse-2.7  

4.   ./configure CFLAGS=-fPIC --disable-nls --prefix=/usr/local/confuse    

5.   make    

6.   make install    

64bit机器需要拷贝动态链接库:

1.   mkdir -p /usr/local/confuse/lib64    

2.   cp -a -f /usr/local/confuse/lib/* /usr/local/confuse/lib64/    

五、安装ganglia到家目录

1.   wget http://jaist.dl.sourceforge.net/project/ganglia/ganglia%20monitoring%20core/3.6.0ganglia-3.6.0.tar.gz  

2.   tar -xf ganglia-3.6.0.tar.gz  

3.   cd ganglia-3.6.0  

4.   ./configure --with-gmetad--enable-gexec --with-libconfuse=/usr/local/confuse --with-libexpat=/usr/local/expat--prefix=/home/username/tools/ganglia --sysconfdir=/home/username/tools/ganglia/etc 

5.   make    

6.   make install    

六、服务端配置
选择76作为服务器端,创建rrdtool数据目录,看$ganglia-web中conf.php里面的gmetad_root变量,并根据apache的运行用户创建权限,例如apache运行于apache用户上 。

1.   sudo mkdir -p /var/lib/ganglia/rrds  

2.   sudo mkdir -p /var/lib/ganglia/dwoo 

配置一个数据源,修改gmetad.conf(/home/zhangweitao/hive-common/ganglia/etc)文件,同时将运行用户设置为rrdtool的目录权限用户,例如apache用户

1. data_source "hadoop_username"10.3.1.76:8659 10.3.1.77:8659 10.3.1.78:8659 10.3.1.79:8659  

2.   setuid_username "root"  

说明:这里的 "hadoop_username " 表示的是集群的名称,后面的内容是这个集群中所包含的主机信息,也就是要监控的主机ip。如果要添加监控的集群需要在此处加入新的data_source
添加自启动脚本

1.   #cp -f ganglia/gmetad/gmetad.init /etc/init.d/gmetad  

2.   #cp -f  $GANGLIA_HOME/sbin/gmetad /usr/sbin/gmetad  

3.   #chkconfig --add gmetad  

启动gmetad服务

1.   #service gmetad start  

看见Starting GANGLIAgmetad: [ OK ]就代表运行正常了。 通过telnet localhost 8651验证gmetad是否正常
七、客户端配置(gmond节点)
环境变量配置,在.bashrc文件中加入:

1.    export GANGLIA_HOME=/home/username/tools/ganglia

2.    exportPATH=$GANGLIA_HOME/bin/:$PATH

3.    exportPATH=$GANGLIA_HOME/sbin/:$PATH

对于生成的默认配置文件需要做适当的修改

1.   globals {  

2.     daemonize = yes  

3.     setuid = yes  

4.     user = username /*运行Ganglia的用户*/  

5.     debug_level = 0  

6.     max_udp_msg_len = 1472  

7.     mute = no  

8.     deaf = no  

9.     host_dmax = 120 /*secs */  

10.    cleanup_threshold = 300 /*secs */  

11.    gexec = no  

12.    send_metadata_interval = 15 /*发送数据的时间间隔*/  

13.  }  

14.    

15.  cluster {  

16.    name = "hadoop_username" /*集群名称*/  

17.    owner = "username" /*运行Ganglia的用户*/  

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/*发送给安装gmetad的机器*/  

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 username@10.3.1.77:~/hadoop/etc/hadoop/

4.       scphadoop/etc/hadoop/hadoop-metrics.properties username@10.3.1.78:~/hadoop/etc/hadoop/

5.       scphadoop/etc/hadoop/hadoop-metrics.properties username@10.3.1.79:~/hadoop/etc/hadoop/

6.        

7.       scphadoop/etc/hadoop/hadoop-metrics2.properties username@10.3.1.77:~/hadoop/etc/hadoop/

8.       scphadoop/etc/hadoop/hadoop-metrics2.properties username@10.3.1.78:~/hadoop/etc/hadoop/

9.       scphadoop/etc/hadoop/hadoop-metrics2.properties username@10.3.1.79:~/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 username@10.3.1.77:~/tools

16.  scp -rtools/ganglia username@10.3.1.78:~/tools

17.  scp -rtools/ganglia username@10.3.1.79:~/tools

18.   

19.  scp.bashrc username@10.3.1.77:~/

20.  scp.bashrc username@10.3.1.78:~/

21.  scp.bashrc username@10.3.1.79:~/

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 username@10.3.1.77> /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 username@10.3.1.78> /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 username@10.3.1.79> /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动态生成的监控状态图表:



 



 

2 0
原创粉丝点击