天天看点

Ganglia监控Hadoop与HBase集群

以下基于上篇hadoop2.6与hbase1.0集群架构:

http://lizhenliang.blog.51cto.com/7876557/1665130

http://lizhenliang.blog.51cto.com/7876557/1661354

 hadoop集群基本部署完成,接下来就需要有一个监控系统,能及时发现性能瓶颈,给故障排除提供有力依据。监控hadoop集群系统好用的比较少,自身感觉ambari比较好用,但不能监控已有的集群环境,挺悲催的。ganglia在网上看到原生支持hadoop、hbase性能监控,试用一段时间感觉还不错,监控项比较全面,配置简单,软件包在epel网络源中,使用yum安装方便快捷。

 ganglia是一个开源集群监控系统,主要用来监控系统性能,如:cpu、mem、硬盘利用率、i/o负载、网络流量等。

ganglia涉及到三个组件:

gmetad:定期从gmond获取数据,并将数据存储到rrd存储引擎中。

gmond:被监控端代理程序,用于收集监控信息,并发送给gmetad。

ganglia-web:web前端,rrd绘图后通过php展示。

四、ganglia集群监控系统部署

1.  centos7 yum源自带epel网络源,直接安装(部署到hmaster0上,尽量单独放一台机器上)

1

2

<code># yum install epel-release   </code>

<code># yum install ganglia-web ganglia-gmetad ganglia-gmond</code>

此时会安装出来我们要安装的ganglia之外,还要安装httpd、php、rrdtool、gd、png、jpeg等相关软件包

2.  配置监控端(在hmaster0上配置)

 2.1 配置监控程序

3

<code> </code><code># vi /etc/ganglia/gmetad.conf   #修改以下两项</code>

<code> </code><code>data_source </code><code>"hadoop"</code> <code>192.168.18.215 192.168.18.216 192.168.18.217 192.168.18.218192.168.18.219</code>

<code> </code><code>case_sensitive_hostnames 1</code>

 参数说明:

 第一个是数据源,hadoop是集群名字,后跟ip是集群中被监控节点地址。

 第二个意思是是否区分主机名大小写,默认是0,修改为1,否则节点中主机名有大写的将保存为小写,写到/var/lib/ganglia/rrds/hadoop中,导致图形无数据。

 2.2 关联apache,因为ganglia自创建的配置ganglia.conf有问题,所以先删除,再创建个软连接到apache根目录下。

<code> </code><code># rm /etc/httpd/conf.d/ganglia.conf  </code>

<code> </code><code># ln -s /usr/share/ganglia /var/www/html/ganglia</code>

 2.3启动apache和ganglia,并设置开机启动

4

<code> </code><code># systemctl start httpd</code>

<code> </code><code># systemctl start gmetad</code>

<code> </code><code># systemctl enable httpd</code>

<code> </code><code># systemctl enable gmetad</code>

3.  安装与配置被监控端(每台同样配置)

 3.1 安装与配置代理程序

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

<code> </code><code># yum install ganglia-gmond</code>

<code> </code><code># vi /etc/ganglia/gmond.conf</code>

<code> </code><code>……</code>

<code> </code><code>cluster{</code>

<code>   </code><code>name = </code><code>"hadoop"</code>              <code>#集群名,和上面那个一样</code>

<code>   </code><code>owner = </code><code>"unspecified"</code>

<code>   </code><code>latlong = </code><code>"unspecified"</code>

<code>   </code><code>url = </code><code>"unspecified"</code>

<code> </code><code>}</code>

<code>  </code> 

<code> </code><code>/* thehost section describes attributes of the host, like the location */</code>

<code> </code><code>host {</code>

<code>   </code><code>location = </code><code>"unspecified"</code>

<code> </code><code>/*feel </code><code>free</code> <code>to specify as many udp_send_channels as you like.  gmond</code>

<code>    </code><code>used to only support having a single channel*/</code>

<code> </code><code>udp_send_channel{</code>

<code>   </code><code>#bind_hostname = yes # highly recommended,soon to be default.</code>

<code>                       </code><code># this option tells gmond to use asource  address</code>

<code>                        </code><code># that resolves to themachine's hostname.  without</code>

<code>                        </code><code># this, the metrics mayappear to come from any</code>

<code>                        </code><code># interface and the dnsnames associated with</code>

<code>                        </code><code># those ips will be usedto create the rrds.</code>

<code>   </code><code>#mcast_join = 239.2.11.71   #关闭多播</code>

<code>   </code><code>host = 192.168.18.215     </code><code>#添加发送ip/主机名</code>

<code>   </code><code>port = 8649          </code><code>#默认端口</code>

<code>   </code><code>ttl = 1</code>

<code> </code> 

<code> </code><code>/* youcan specify as many udp_recv_channels as you like as well. */</code>

<code> </code><code>udp_recv_channel{</code>

<code>   </code><code>#mcast_join = 239.2.11.71  </code>

<code>   </code><code>port = 8649</code>

<code>   </code><code>bind = 192.168.18.215      </code><code>#接收地址</code>

<code>   </code><code>retry_bind = </code><code>true</code>

<code>   </code><code># size of the udp buffer. if you are handlinglots of metrics you really</code>

<code>   </code><code># should bump it up to e.g. 10mb or evenhigher.</code>

<code>   </code><code># buffer = 10485760</code>

3.2 将修改好的gmond.conf配置scp到其他节点

<code># scp /etc/ganglia/gmond.conf root@hmaster1:/etc/ganglia/gmond.conf   #分别拷贝hslave0、1、2</code>

3.3 启动代理程序,并设置开机启动

<code># systemctl start gmond</code>

<code># systemctl enable gmond</code>

4.  添加hadoop被ganglia监控,去掉文件中以***释并修改(每台同样配置)

<code># vi /opt/hadoop-2.6.0/etc/hadoop/hadoop-metrics2.properties</code>

<code>*.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.gangliasink31</code>

<code>*.sink.ganglia.period=10</code>

<code>*.sink.ganglia.supportsparse=</code><code>true</code>

<code>*.sink.ganglia.slope=jvm.metrics.gccount=zero,jvm.metrics.memheapusedm=both</code>

<code>*.sink.ganglia.dmax=jvm.metrics.threadsblocked=70,jvm.metrics.memheapusedm=40</code>

<code>namenode.sink.ganglia.servers=192.168.18.215:8649    </code><code>#当有多个ganglia监控系统时,以逗号分隔</code>

<code>datanode.sink.ganglia.servers=192.168.18.215:8649     </code><code>#都指定ganglia服务器</code>

<code>resourcemanager.sink.ganglia.servers=192.168.18.215:8649</code>

<code>nodemanager.sink.ganglia.servers=192.168.18.215:8649</code>

5.  添加hbase被ganglia监控,添加如下(每台同样配置)

<code># vi /opt/hbase-1.0.1.1/conf/hadoop-metrics2-hbase.properties</code>

<code>*.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.gangliasink31  </code>

<code>*.sink.ganglia.period=10  </code>

<code>hbase.sink.ganglia.period=10  </code>

<code>hbase.sink.ganglia.servers=192.168.18.215:8649</code>

6.  重启hadoop和hbase

<code># stop-dfs.sh</code>

<code># stop-yarn.sh</code>

<code># stop-hbase.sh</code>

<code># start-dfs.sh</code>

<code># start-yarn.sh</code>

<code># start-hbase.sh   #hregionserver节点需要手动启动(hbase-daemon.sh start regionserver)</code>

7.  通过web查看性能监控数据

访问地址:http://192.168.18.215/ganglia

Ganglia监控Hadoop与HBase集群
Ganglia监控Hadoop与HBase集群

继续阅读