最近为了更好地监控Hadoop集群,所以采用了目前通用的ganglia来监控。但是在集成的过程中,发现了一些问题,但是在网上的相关资料介绍的很不清楚。
再次把我亲自操作的流程在进行梳理下,希望有帮助。
这里不在介绍如何安装ganglia了,主要问题就是集中在集成上面。
版本使用情况如下:
ganglia是3.1版本以上
hadoop是1.0.3的版本
在集成的过程中,主要需要关注两个配置文件:
第一个:hadoop-metrics2.properties
第二个:gmond.conf
这两个文件在每台机器上面都有的(包括master和slave)。第一个文件在$HADOOP_HOME/conf目录下,第二个文件一般在/etc/ganglia目录下面(如果不在,就查下安装在那里)
hadoop集成主要是修改hadoop-metrics2.properties文件,该文件已经存在模板了,只要把相关注释去掉即可,内容如下(以master为例):
# 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=40
namenode.sink.ganglia.servers=239.2.11.71:8654
#datanode.sink.ganglia.servers=yourgangliahost_1:8649,yourgangliahost_2:8649
jobtracker.sink.ganglia.servers=239.2.11.71:8654
#tasktracker.sink.ganglia.servers=yourgangliahost_1:8649,yourgangliahost_2:8649
#maptask.sink.ganglia.servers=yourgangliahost_1:8649,yourgangliahost_2:8649
#reducetask.sink.ganglia.servers=yourgangliahost_1:8649,yourgangliahost_2:8649
该文件里后面的六行中,我只去掉了namenode.sink.ganglia.servers和jobtracker.sink.ganglia.servers这两个注释段,如果是slave,就反之。如下:
#namenode.sink.ganglia.servers=yourgangliahost_1:8649,yourgangliahost_2:8649
datanode.sink.ganglia.servers=239.2.11.71:8654
#jobtracker.sink.ganglia.servers=yourgangliahost_1:8649,yourgangliahost_2:8649
tasktracker.sink.ganglia.servers=239.2.11.71:8654
maptask.sink.ganglia.servers=239.2.11.71:8654
reducetask.sink.ganglia.servers=239.2.11.71:8654
这里再说下server里的IP和端口,是从哪里获取的,就是从我刚才介绍的第二个文件里获取,网上很多资料在介绍的过程中,并没有说明这个,第二个内容截取部分内容如下:
udp_send_channel {
#bind_hostname = yes # Highly recommended, soon to be default.
# This option tells gmond to use a source address
# that resolves to the machine's hostname. Without
# this, the metrics may appear to come from any
# interface and the DNS names associated with
# those IPs will be used to create the RRDs.
mcast_join = 239.2.11.71
port = 8654
ttl = 1
}
IP就是mcast_join,这个是比较特殊的IP。而端口就是port。所以在集成的过程中,一定要根据实际情况来进行修改。
完成后,重启hadoop,就会出现以下内容,就算是成功了。如图(部分):
图1
图2
图3
图4
图5