如何监控你的Hadoop+Hbase集群?

29 篇文章 0 订阅
[size=medium]
前言

监控hadoop的框架有不少,如CDH的CM组件和Ambari都可以监控他们自己的hadoop,但是它不能监控apache的hadoop,如果你是使用原生的Apache Hadoop,那么也没关系,原生的Hadoop天生就提供了非常详细的对接Ganglia的jmx接口,里面包含了各个核心组件metrics获取功能,这一点你可以查看hadoop和hbase包括spark的conf下面的metrics文件里面配置,就能得到验证。

(一)Ganglia是什么?
 Ganglia 是 UC Berkeley 发起的一个开源监视项目,设计用于测量数以千计的节点。每台计算机都运行一个收集和发送度量数据(如处理器速度、内存使用量等)的名为 gmond 的守护进程。它将从操作系统和指定主机中收集。接收所有度量数据的主机可以显示这些数据并且可以将这些数据的精简表单传递到层次结构中。正因为有这种层次结构模式,才使得 Ganglia 可以实现良好的扩展。gmond 带来的系统负载非常少,这使得它成为在集群中各台计算机上运行的一段代码,而不会影响用户性能。

(二)Ganglia的主要组件

1,gmond (Ganglia Monitioring Daemon):

gmond是ganglia监控的基于多线程模式的守护进程,它需要安装运行在每个你想要监控的机器上,安装非常简单,你不需要有一个通用的NFS系统或者安装一个数据库后端存储,
或者安装指定一个账户,也不需要维护一个繁琐的配置文件。
gmond有4个主要的职责:

A:监控主机状态变化
B:发现或发布相关变化
C:监控其他的所有的ganglia节点通过一个单播(unicast)或者多播(multicast)通道模式
D:答复集群转态通过一个XML描述的信息

2,gmetad(Ganglia Meta Daemon )
gmetad是ganglia的元数据守护进程,通常只需要一个监控集群只需要一个元数据守护进程即可,当然如果你想实现高可用的数据冗余,你也可以配置多个,
gmetad主要是收集汇聚解析从各个gmond进程汇报发送过来的信息,并将其保存至rrd数据库里,供前端查询展示所需。

3,ganglia-web(Ganglia PHP Web Frontend)
ganglia的前端展示框架,负责以图形化的方式,展示集群的一些metics,并且支持分钟,小时,日,月,年,级别的汇总展示,虽然页面丑陋了点,但不
不算华而不实,主要是将rrd里面的XML的数据,解析为静态的HTML网页,方便管理员查询集群的cpu,内存,磁盘,网络,等一些自定义的metrics的某个时间段的
负载展现图

(三)Ganglia的架构拓扑
[/size]


[img]http://dl2.iteye.com/upload/attachment/0115/9774/b8bbc994-72bf-397d-9a07-c18b092fea3f.png[/img]


[size=medium]
(四)Ganglia的安装

假设有3台机器centos6.5的系统,分别如下:

192.168.1.187 hadoop hbase gmetad gmond ganglia-web
192.168.1.186 hadoop hbase gmond
192.168.1.184 hadoop hbase gmond


主节点上安装的组件安装gmetad,gmond,ganglia-web
1,安装依赖组件:
[/size]

yum -y install httpd-devel automake autoconf libtool ncurses-devel libxslt groff pcre-devel pkgconfig

[size=medium]
2,安装ganglia的epel源,每台机器上
如果是centos7的系统:
[/size]

# yum install epel-release
# yum install ganglia-web ganglia-gmetad ganglia-gmond 或者直接 yum install -y ganglia*

[size=medium]
如果是centos6的系统:[/size]

sudo rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
yum install -y ganglia*


[img]http://dl2.iteye.com/upload/attachment/0115/9776/55d2839f-4902-32ac-9e3d-33247cd79188.png[/img]


[size=medium]
3,配置ganglia
主节点上,需要配置三个东西:
A : /etc/ganglia/gmetad.conf 只需要配置2个核心选项即可
[/size]

data_source "hadoop" 192.168.1.187 192.168.1.186 192.168.1.184 // 使用单播的方式,加入所有要监控的机器ip,默认端口是8649
case_sensitive_hostnames 1 //是否忽略大小写,1代表不忽略,如果你的机器名里面含有大写的字母,一定要配置1,否则ganglia的前端图形就不能正确的读取rrds里面的每个机器的数据

[size=medium]
B : /etc/ganglia/gmond.conf
[/size]

cluster {
name = "hadoop" #配置的名字与gmetad里面的需要一致
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}

udp_send_channel {
#mcast_join = 239.2.11.71 #注释掉默认的多播地址
host = 192.168.1.187 # 使用单播模式,发送消息
port = 8649
ttl = 1
}

udp_recv_channel {
#mcast_join = 239.2.11.71
port = 8649
bind = 192.168.1.187 #主节点的这个配置需要加上,用来接受其他机器上的传输过来的数据 , 特别注意从节点上的这项配置是
retry_bind = true
}

[size=medium]
C : /etc/httpd/conf.d/ganglia.conf
[/size]


<Location /ganglia>
Order deny,allow
Allow from all #允许所有的机器访问
#Deny from all
#Allow from 127.0.0.1
# Allow from ::1
# Allow from .example.com
</Location>

[size=medium]
4,从节点只要安装gmond组件即可
[/size]

yum install -y ganglia-gmond

[size=medium]
然后配置gmond.conf
[/size]

cluster {
name = "hadoop" #配置的名字与gmetad里面的需要一致
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}

udp_send_channel {
#mcast_join = 239.2.11.71 #注释掉默认的多播地址
host = 192.168.1.187 # 使用单播模式,发送消息
port = 8649
ttl = 1
}

udp_recv_channel {
#mcast_join = 239.2.11.71
port = 8649
#bind = 192.168.1.187 仅仅安装gmond的节点上,不需要这项配置,加上会报错
retry_bind = true
}

[size=medium]
5,如何改变rrd存储路径:
最好的办法,就是使用软连接,直接改gmetad里面的配置有时候可能不生效

默认的存储路径在/var/lib/ganglia/rrds/
你可以在这个目录,建一个软连接,改变此库的存储路径:

在/var/lib/ganglia/rrds 新建软连接,第一个参数是新路径,第二个参数是默认路径
[/size]

sudo ln -s /ROOT/server/rrds /var/lib/ganglia/rrds

[size=medium]
改变rrds的tools的默认路径:
http://stackoverflow.com/questions/26619473/how-to-change-the-storage-path-from-rrdtool-on-the-ganglia
需要注意改变后的路径的权限和用户赋值
[/size]

mkdir -p /some/other/place/
chown -R ganglia:ganglia /some/other/place/
chmod -R 777 /some/other/place/


5,如何卸载组件?


sudo yum remove -y ganglia-web ganglia-gmetad


[size=medium]
主节点启动
[/size]

sudo service gmetad start
sudo service gmond start
sudo service httpd start

[size=medium]
从节点
[/size]

sudo service gmond start


[size=medium]
出现错误后,可以查看系统log的日志
sudo tail -f /var/log/messages
大部分错误,在这里都能看到提示


(五)Hadoop和Hbase的监控

修改hadoop-metrics2.properties文件,在行末添加如下配置:
[/size]

*.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31
*.sink.ganglia.period=10
*.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=192.168.1.187:8649 #当有多个ganglia监控系统时,以逗号分隔
datanode.sink.ganglia.servers=192.168.1.187:8649 #都指定ganglia服务器
resourcemanager.sink.ganglia.servers=192.168.1.187:8649
nodemanager.sink.ganglia.servers=192.168.1.187:8649
mrappmaster.sink.ganglia.servers=192.168.1.187:8649
jobhistoryserver.sink.ganglia.servers=192.168.1.187:8649

[size=medium]
修改hadoop-metrics2-hbase.properties文件,在行末添加如下配置:
[/size]

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


[size=medium]
完了分发hadoop和hbase的配置文件,到所有的机器上,然后重启集群

(六)访问http://192.168.1.187:80/ganglia 查看监控图
[/size]


[img]http://dl2.iteye.com/upload/attachment/0115/9778/dcd268ac-2c10-3e38-a7cb-07d240bab17f.png[/img]

[img]http://dl2.iteye.com/upload/attachment/0115/9780/44f94cdb-1cc5-3856-9801-45635d7be73e.png[/img]


[img]http://dl2.iteye.com/upload/attachment/0115/9782/c34aafcd-2a91-3c63-aa37-4118c711654c.png[/img]


[size=medium]yarn监控[/size]

[img]http://dl2.iteye.com/upload/attachment/0115/9784/1011a84b-d636-33dd-8515-658d05f5e1af.png[/img]


[size=medium]hbase的监控[/size]


[img]http://dl2.iteye.com/upload/attachment/0115/9786/024e1fdf-d963-3451-95a8-d6bd77f27fa8.png[/img]


[size=medium]
至此,我们的监控系统就建立起来了,需要注意的是,当监控上hadoop的相关的指标时,rrds库的体积,膨胀比较大,所以这个库存的盘一定要大一点,或者在gmetad里面开启gzip压缩,否则把系统盘撑爆了,其他的程序有可能也会受到影响。

参考链接:
[url]https://sourceforge.net/projects/ganglia/?source=typ_redirect[/url]

[url]http://blog.cheyo.net/88.html[/url]

[url]http://www.cnblogs.com/smartloli/p/4519914.html[/url]

[url]http://lizhenliang.blog.51cto.com/7876557/1669312[/url]

[url]http://www.cnblogs.com/zhengrunjian/p/4998334.html[/url]
[/size]
[b][color=green][size=large]
有什么问题 可以扫码关注微信公众号:我是攻城师(woshigcs),在后台留言咨询。
本公众号的内容是有关搜索和大数据技术和互联网等方面内容的分享,也是一个温馨的技术互动交流的小家园
[/size][/color][/b]
[img]http://dl2.iteye.com/upload/attachment/0104/9948/3214000f-5633-3c17-a3d7-83ebda9aebff.jpg[/img]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值