以下基于上篇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