使用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服务