关于 Ganglia 软件,Ganglia是一个跨平台可扩展的,高性能计算系统下的分布式监控系统,如集群和网格。它是基于分层设计,它使用广泛的技术,如XML数据代表,便携数据传输,RRDtool用于数据存储和可视化。它利用精心设计的数据结构和算法实现每节点间并发非常低的。
它已移植到广泛的操作系统和处理器架构上,目前在世界各地成千上万的集群正在使用。它已被用来连结大学校园和世界各地,可以处理2000节点的规模。
一、安装环境
Ubuntu Server 14.04
安装gmetad的机器:192.168.1.50(Spark-Master)
安装gmond的机器:192.168.1.50(Spark-Master),192.168.1.51(Spark-Slave1),192.168.1.52(Spark-Slave2),192.168.1.53(Spark-Slave3)
浏览监控web页面的机器:192.168.51.50(Spark-Master)
二、介绍
Ganglia 监控套件包括三个主要部分:gmond,gmetad,和网页接口,通常被称为ganglia- web。
gmond 是一个守护进程,他运行在每一个需要监测的节点上,收集监测统计,发送和接受在同一个组播或单播通道上的统计信息。
gmetad 也是一个守护进程,他定期检查gmonds ,从那里拉取数据,并将他们的指标存储在RRD存储引擎中。它可以查询多个集群并聚合指标。RRD也被用于生成用户界面的web前端。
ganglia- web 顾名思义,他应该安装在有gmetad运行的机器上,以便读取RRD文件。
三、安装
1、确保在 Ubuntu14.04 上安装了 LAMP 服务
Ganglia 由两个所谓主要守护进程 gmond(Ganglia 监测守护进程)和 gmetad(Ganglia 元守护进程),一个基于 PHP 的 Web 前端和其他一些小的实用程序。
2、在 Ubuntu14.04 上安装 Ganglia
打开终端,运行以下命令:
sudo apt-get install ganglia-monitor rrdtool gmetad ganglia-webfrontend
3、配置 Ganglia
已经完成了基本的安装,现在我们按照下面必要的步骤来配置。
4、Ganglia 主节点配置(Spark-Master)
现在需要复制 Ganglia webfrontend Apache 配置,使用下面的命令来正确的位置:
sudo cp /etc/ganglia-webfrontend/apache.conf /etc/apache2/sites-enabled/ganglia.conf
现在需要使用以下命令来编辑 Ganglia 元守护程序的配置文件:
sudo vi /etc/ganglia/gmetad.conf
更改如下:
data_source "MySpark" 10 Spark-Master:8649 Spark-Slave1:8649 Spark-Slave2:8649 Spark-Slave3:8649
通过以上列出机器服务的数据源,IP:端口或服务器名称:端口。如果未指定端口号8649(默认gmond端口)。
case_sensitive_hostnames 1------设置为1,则不会将hostname中大写变成小写
单播:可以跨网段传播,只将信息发送给指定的机器。要配置成为单播你应该指定一个(或者多个)接受的主机。
组播:在机器所处的网段中发送广播,发送给位于同一网段的所有机器。如果你正在使用组播传输,那么你没必要改变任何东西,因为这是Ganglia包安装默认的。唯一要做的就是把gmetad指向一个或几个运行着gmond的主机。没有必要列出每一个单个主机,因为gmond被设置为接受模式时会包含所有主机的列表以及整个集群的统计信息。
使用了单播模式,需要使用下面的命令编辑主节点的配置文件:
sudo vi /etc/ganglia/gmond.conf
更改如下:(红色为改动)
globals {
daemonize = yes
setuid = yes
user = hadoop------运行Ganglia的用户
debug_level = 0
max_udp_msg_len = 1472
mute = no
deaf = no
host_dmax = 0
cleanup_threshold = 300
gexec = no
send_metadata_interval = 5------发送数据的时间间隔
}
cluster {
name = "MySpark"------集群名称
owner = "hadoop"------运行Ganglia的用户
latlong = "unspecified"
url = "unspecified"
}
udp_send_channel {
# mcast_join = 192.168.1.50------注释掉组播
host = 192.168.1.50------发送给安装gmetad的机器
port = 8649
ttl = 1
}
udp_recv_channel {
# mcast_join = 192.168.1.50------注释掉组播
port = 8649
}
保存并关闭文件。
需要重启服务:
sudo /etc/init.d/ganglia-monitor restart
sudo /etc/init.d/gmetad start
sudo /etc/init.d/apache2 restart
现在你可以使用以下命令访问ganglia webinterface:
http://192.168.1.50/ganglia/
5、Ganglia 客户端配置(Spark-Slave*)
需要安装以下所有服务器要监视客户端包:
sudo apt-get install ganglia-monitor
需要使用下面的命令编辑gmond.conf文件:
sudo vi /etc/ganglia/gmond.conf
更改如下:(红色为改动)
globals {
daemonize = yes
setuid = yes
user = hadoop
debug_level = 0
max_udp_msg_len = 1472
mute = no
deaf = no
host_dmax = 0
cleanup_threshold = 300
gexec = no
send_metadata_interval = 5
}
cluster {
name = "MySpark"
owner = "hadoop"
latlong = "unspecified"
url = "unspecified"
}
udp_send_channel {
# mcast_join = 192.168.1.50
host = 192.168.1.50
port = 8649
ttl = 1
}
udp_recv_channel {
# mcast_join = 192.168.1.50
port = 8649
}
保存并退出。
重启 ganglia monitor 服务:
sudo /etc/init.d/ganglia-monitor restart
6、监控Hadoop集群
(1) 修改Hadoop的配置文件/etc/hadoop/hadoop-metrics.properties(适用于Ganglia老版本)
dfs.class=org.apache.hadoop.metrics.ganglia.GangliaContext31
dfs.period=10
dfs.servers=192.168.1.50:8649
mapred.class=org.apache.hadoop.metrics.ganglia.GangliaContext31
mapred.period=10
mapred.servers=192.168.1.50:8649
jvm.class=org.apache.hadoop.metrics.ganglia.GangliaContext31
jvm.period=10
jvm.servers=192.168.1.50:8649
rpc.class=org.apache.hadoop.metrics.ganglia.GangliaContext31
rpc.period=10
rpc.servers=192.168.1.50:8649
ugi.class=org.apache.hadoop.metrics.ganglia.GangliaContext31
ugi.period=10
ugi.servers=192.168.1.50:8649
(2) 修改Hadoop的配置文件/etc/hadoop/hadoop-metrics2.properties(适用于Ganglia新版本)
*.sink.file.class=org.apache.hadoop.metrics2.sink.FileSink
*.period=10
*.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31
*.sink.ganglia.period=10
*.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.50:8649
datanode.sink.ganglia.servers=192.168.1.50:8649
resourcemanager.sink.ganglia.servers=192.168.1.50:8649
nodemanager.sink.ganglia.servers=192.168.1.50:8649
maptask.sink.ganglia.servers=192.168.1.50:8649
reducetask.sink.ganglia.servers=192.168.1.50:8649
所有的servers都修改为安装为gmetad的机器IP(Spark-Master),保存完以后将配置文件分发到各个Slave节点的${HADOOP_HOME}/etc/hadoop目录下,重启Hadoop集群即可。