0. Ganglia的架构
---------------------------------------------
Ganglia有3部分组成
a. gmond
运行在每个节点上监视收集统计信息,同时可以收发统计信息,它可以运行在广播模式或单播模式
b. gmetad
从gmond以poll的方式收集和存储原数据
c. ganglia-web
跑在gmetad的机器上,访问gmetad存储的元数据并由apache web提供用户访问接口
1. 下载并安装yun的EPEL repository
a. Redhat 6
wget
rpm -i epel-release-6-5.noarch.rpm
b. Redhat 5
wget
rpm -ivh epel-release-5-4.noarch.rpm
2. 安装Ganlia包
yum install ganglia ganglia-gmetad ganglia-web ganglia-gmond
我的准备的架构
系统:RHEL 5.5 64bit
Hadoop版本:hadoop-1.0.0, 一个namenode(master),2个datanode(slave1,slave2)
ganglia版本:ganglia-3.0.7
我把Ganglia只安装到hadoop的namenode节点上,把Ganglia配置为单播模式,让hadoop把监视数据发到这个Ganglia中来
3. 配置单播模式
vi /etc/gmond.conf
globals {
daemonize = yes
setuid = yes
user = ganglia
debug_level = 0
max_udp_msg_len = 1472
mute = no /* sender 不是哑巴*/
deaf = no /* receiver 不是聋子*/
allow_extra_data = yes /* reciever 不是聋子*/
host_dmax = 7200 /* 如果2小时没有收到数据,从UI中去掉这个host */
cleanup_threshold = 300 /*secs */
gexec = no
send_metadata_interval = 10 /*secs */
}
cluster {
name = "Hadoop Cluster" 集群的名字
}
/* Sender 配置信息*/
udp_send_channel {
port = 8649
ttl = 1
}
/* receiver 配置信息*/
udp_recv_channel {
port = 8649
}
tcp_accept_channel {
port = 8649
}
说明:如果你想用Ganglia直接监视其它datanode,则
在其他datanode上安装gmond,并将配置为聋子
vi /etc/gmond.conf
globals {
mute = no
deaf = yes
}
udp_send_channel {
host = 192.168.110.127
port = 8649
ttl = 1
}
启动
chkconfig gmond on
service gmond start
验证端口
netstat -ntl
netstat -nul
4. 配置Ganlia Meta Daemon
vi /etc/gmetad.conf
data_source "Hadoop cluster" 192.168.110.127:8649
RRAs "RRA:Max:0.3:6:61" "RRA:AVERAGE:0.5:60:145" "RRA:AVERAGE:0.5:1080:249" "RRA:AVERAGE:0.5:8640:367"
启动gmetad
chkconfig gmetad on
service gmetad restart
启动apache
chkconfig httpd on
service httpd restart
验证
validate:
netstat -ntl
访问web:
5. 集成hadoop
Hadoop 1配置文件名和参数都变了
vi conf/ hadoop-metrics2.properties
# for Ganglia 3.0 support
*.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink30
*.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.110.127:8649
datanode.sink.ganglia.servers=192.168.110.127:8649
jobtracker.sink.ganglia.servers=192.168.110.127:8649
tasktracker.sink.ganglia.servers=192.168.110.127:8649
maptask.sink.ganglia.servers=192.168.110.127:8649
reducetask.sink.ganglia.servers=192.168.110.127:8649
6. 自定义Ganglia监视的时间段和精确度
=================================================================
vi /etc/gmetad.conf
data_source "Hadoop cluster" 192.168.110.127:8649
RRAs "RRA:max:0.3:1:61" "RRA:Max:0.3:6:61" "RRA:AVERAGE:0.5:60:145" "RRA:AVERAGE:0.5:1080:249" "RRA:AVERAGE:0.5:8640:367"
RRAs 10Minutes Hour Day Month Year
RRA:{AVERAGE | MIN | MAX | LAST}:xff:steps:rows
RRA(round robin archives):定义循环存放的统计数据
xff:0到1,定义一个未知数据统计中所占的百分比
steps:多少个点归纳为一个点
rows:总共保存多少个点,这决定了文件的大小
10秒产生一次统计数据
Last 10分钟:
一次(10秒)一个点
60个点600秒=10分钟
Last Hour:
6*10=60:一份一个点
60*60=3600秒, 保存60个点
Last Day:
60*10=600, 10分钟一个点
144*600=86400秒(一天)
Last Month:
1080*10秒=10800秒, 3小时一个点
31*8=248+1, 一天8个点
Last Year:
一天一个点
367天的数据
这些要跟数据对应好:
vi /etc/ganglia/conf.php
$time_ranges = array(
'TenMin'=>600,
'hour'=>3600,
'day'=>86400,
'week'=>604800,
'month'=>2419200,
'year'=>31449600
);
修改RRAS后需要删除以前的文件,重新启动
rm -fr /var/lib/ganglia/rrds/*
阅读(6952) | 评论(2) | 转发(0) |