Hadoop监控之Ganglia整合

1 Ganglia基本原理

Hadoop监控之Ganglia整合_第1张图片
在Hadoop产生之前就有Ganglia,他是为集群系统监控而生。Hadoop利用Ganglia的接口,从而实现了对Ganglia的兼容。

1.1 gmond

分布在各个节点上的监控进程,搜集本节点的监控信息。针对Hadoop监控,可以采用同样的协议向gmond服务发送Hadoop的监控信息。

1.2 gmetad

相当与集群中的中心节点,主动拉取各个节点上收集到的监控信息。可以设置多层的gmetad,这样形成一个联邦系统,从而减少gmeta本身的压力。一个gmeta最多大概能承受500个节点的信息上报,数目过多会造成gmeta节点本身性能下降。
gmetad中存储监控信息的方式是rrd为后缀名的文件,每个监控指标有一个文件相对应。

2 Ganglia的网络通信方式。

1.1 默认的Multicast

Hadoop监控之Ganglia整合_第2张图片
每个集群(Host Cluster)中的每个节点采用同一个主播地址,这样监控信息可以被任何一台机器看到。好处是节省带宽,和不存在单点故障(因为gmetad只需要从主播地址取数据就行了),但是需要Hub这样的硬件支持,有些switch是不支持主播地址的。在云服中,S3和阿里云等可能也不支持主播。

gmetad从主播地址拉取监控信息之后,将监控信息交给RRDtool这个类,负责向磁盘中写rrd文件。
gweb模块通过网页的方式,读取rrd文件,生成监控图表。

1.2 单播unicast

Hadoop监控之Ganglia整合_第3张图片
于主播方式唯一不同的地方是所有的节点先将监控信息send到一个中心节点,图中为node1~node3将监控信息主动推到node4.
之后gmetad主动拉取gmond4上汇总的监控信息,从而实现rrd文件的更新。

3 安装方式

在centos的repo中已经有比较稳定的Ganglia版本,因此我们可以直接通过yum来安装。

在server侧(这里我们采用单播方式,gmetad和Node4上的gmond同时装在一台机器上了)同时安装gmetad和gmond:

yum  install  rrdtool  ganglia-gmetad  ganglia-gmond ganglia-web  httpd  php

在client侧(上图中Node1~Node3)

yum install ganglia-gmond

4 配置

4.1 配置apache

由于gweb采用apache服务器,而默认情况下配置为任何IP都不能访问这个服务。修改配置文件如下:

/etc/httpd/conf.d/ganglia.conf

Order deny,allow
#Deny from all
Allow from all
Allow from 127.0.0.1
Allow from ::1
# Allow from .example.com
4.2配置Gmeta配置文件。

有两项需要修改,一个是配置gmeta从哪个节点上的gmond上拉取汇总后的监控信息,这里设置为同时跑在本机的Node4节点的IP(这里其实是HostName)。另一个是需要配置hostname大小写敏感,不然在gweb中显示节点信息时可能会因为节点hostName中有大写字母反而读取不到小写字母命名的rdds文件夹。

/etc/ganglia/gmetad.conf
data_source  "mycluster"  Node4
case_sensitive_hostnames   1

rdds存放目录默认为:

/var/lib/ganglia/rrds

可以通过建立软连接的方式,更改这个目录的实际位置:

    mkdir -p /data/ganglia/rrds/;
    chown ganglia /data/ganglia/rrds/;
    chgrp ganglia /data/ganglia/rrds/;
    ln -sf  /data/ganglia/rrds/ /var/lib/ganglia/;
4.3配置Gmond配置文件。

gmond主动推送监控信息时采用的是udp协议,默认情况下是多播地址,我们这里改为单播地址(Node4的IP地址),并去掉udp_recv_channel中的多播地址和绑定,只留下端口号信息。

– /etc/ganglia/gmond.conf
cluster {
name = "mycluster"
owner = "unspecified"
latlong   = "unspecified"
url   = "unspecified"
}
udp_send_channel  {
mcast_join = Node4
port = 8649
ttl   = 1
}
udp_recv_channel  {
port = 8649
}

5 启动服务查看web页面

5.1 在各个节点上配置好之后,就可以启动服务了。
#正常启动
– service  httpd  start  #启动apache
– service  gmetad  start  #启动gmetad
– service  gmond start    #启动gmond
# 如果要看启动信息可以采用Deug方式启动。
– /usr/sbin/gmetad  -d 5
– /usr/sbin/gmond   -d 5
5.2 查看Ganglia主页地址

主页地址为启动httpd的那台机器的IP/ganglia
Hadoop监控之Ganglia整合_第4张图片

点击图中的mycluster就可以查看各个节点中的监控信息了。

6 Hadoop监控和Ganglia集成。

6.1Hadoop监控简介

Hadoop监控之Ganglia整合_第5张图片
这里不详细介绍Hadoop如何兼容了Ganglia,给出以上模块示意图,有兴趣的同学可以去阅读Hadoop中涉及的图中所示类的源码。
整合示意图:
Hadoop监控之Ganglia整合_第6张图片

6.2 修改配置文件

在Hadoop配置目录:hadoop/etc/hadoop 下的hadoop-metrics2.properties配置文件。
以 source为datanode为例:

*.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31
*.sink.ganglia.period=10
datanode.sink.ganglia.servers=Node4:8649

7 附上一幅监控结果图:(挺有艺术感的,哈哈哈)

Hadoop监控之Ganglia整合_第7张图片

你可能感兴趣的:(hadoop)