监控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的架构拓扑
(四)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,安装依赖组件:
yum -y install httpd-devel automake autoconf libtool ncurses-devel libxslt groff pcre-devel pkgconfig
2,安装ganglia的epel源,每台机器上
如果是centos7的系统:
# yum install epel-release
# yum install ganglia-web ganglia-gmetad ganglia-gmond 或者直接 yum install -y ganglia*
如果是centos6的系统:
sudo rpm -Uvh Fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
yum install -y ganglia*
下面关于Hadoop的文章您也可能喜欢,不妨看看:
Ubuntu14.04下Hadoop2.4.1单机/伪分布式安装配置教程
Ubuntu 12.10 +Hadoop 1.2.1版本集群配置
3,配置ganglia
主节点上,需要配置三个东西:
A : /etc/ganglia/gmetad.conf 只需要配置2个核心选项即可