Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1283443
  • 博文数量: 127
  • 博客积分: 2286
  • 博客等级: 大尉
  • 技术积分: 1943
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-10 10:37
文章分类

全部博文(127)

文章存档

2018年(1)

2015年(2)

2014年(1)

2013年(30)

2012年(88)

2011年(5)

分类: 云计算

2012-03-28 16:34:34


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/*



阅读(6808) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

kerlion2012-04-06 11:21:25

当然可以了,我是没有别的机器!

cherio20022012-03-30 14:59:21

kerlion 您好,我想请问一下,gmetad一定要安装在Namenode上吗?我希望单独部署一台服务器运行gmetad和Web Frontend,这样可以吗?