Ganglia是一个监控服务器,集群的开源软件,能够用曲线图表现最近一个小时,最近一天,最近一周,最近一月,最近一年的服务器或者集群的cpu负载,内存,网络,硬盘等指标。

Ganglia的强大在于:ganglia服务端能够通过一台客户端收集到同一个网段的所有客户端的数据,ganglia集群服务端能够通过一台服务端收集到它下属的所有客户端数据。这个体系设计表示一台服务器能够通过不同的分层能够管理上万台机器。这个功能是其他mrtg,nagios,cacti所不能比拟的。

Ganglia是UC Berkeley发起的一个开源实时监视项目,用于测量数以千计的节点,为云计算系统提供系统静态数据以及重要的性能度量数据。

Ganglia系统基本包含以下三大部分。

Gmond:Gmond运行在每台计算机上,它主要监控每台机器上收集和发送度量数据(如处理器速度、内存使用量等)。

Gmetad:Gmetad运行在Cluster的一台主机上,作为Web Server,或者用于与Web Server进行沟通。

Ganglia Web前端:Web前端用于显示Ganglia的Metrics图表。

Hadoop和HBase本身对于Ganglia的支持非常好。通过简单的配置,我们可以将Hadoop和HBase的一些关键参数以图表的形式展现在Ganglia的Web Console上。这些对于我们

洞悉Hadoop和HBase的内部系统状态有很大的帮助。

 Ganglia工作原理和结构:

gmetad端口:8651、8652...

gmond端口: 8649

一、ganglia安装:

1、准备好epel源,首先在master上安装

# yum install ganglia ganglia-gmetad ganglia-gmond ganglia-web -y

2、在各个slave端安装 ganglia-mond

# yum install ganglia-gmond -y

二、ganglia配置:

1、vim /etc/ganglia/gmetad.conf  #收集来自各个节点上的信息并存储在RRDtool上

data_source "myhadoop" 10.0.10.60

2、vim /etc/ganglia/gmond.conf


 cluster {
  name = "myhadoop"
  owner = "unspecified"
  latlong = "unspecified"
  url = "unspecified"
  }

.............

udp_send_channel {         #布尔类型,多播或单播
#bind_hostname = yes # Highly recommended, soon to be default.
# This option tells gmond to use a source address
# that resolves to the machine's hostname. Without
# this, the metrics may appear to come from any
# interface and the DNS names associated with
# those IPs will be used to create the RRDs.
mcast_join = 10.0.10.60 #仅多播方式multicast
port =
ttl =
} /* You can specify as many udp_recv_channels as you like as well. */
udp_recv_channel {
#mcast_join = 239.2.11.71
port =
#bind = 239.2.11.71
retry_bind = true
# Size of the UDP buffer. If you are handling lots of metrics you really
# should bump it up to e.g. 10MB or even higher.
# buffer =
}

将默认的多播地址改为master地址,将udp_recv_channel 的2个IP注释掉。

3、vim /etc/httpd/conf.d/ganglia.conf

#
# Ganglia monitoring system php web frontend
# Alias /ganglia /usr/share/ganglia <Location /ganglia>
Order deny,allow
Allow from all
Allow from 127.0.0.1
Allow from ::
# Allow from .example.com
</Location>

将Deny from all 改为Allow from all,否则在页面访问时有权限问题

4、vim /etc/php.ini

date.timezone = Asia/Shanghai

5、启动ganglia

# ln -s /usr/local/rrdtool/bin/rrdtool /usr/bin/rrdtool

# service httpd start

# service gmond start

# service gmetad start

6、从页面访问 http://10.0.10.60/ganglia

一些注意问题:

1、gmetad收集到的信息被放到/var/lib/ganglia/rrds/

2、可以通过以下命令检查是否有数据在传输

# tcpdump port 8649

3、错误日志可以查看 /var/log/httpd/error_log

三、配置Hadoop与hbase

1、hadoop有两个配置文件hadoop-metrics.properties和hadoop-metrics2.properties

hadoop-metrics.properties:用于hadoop与3.1版本以前的ganglia集成做监控的配置文件(在ganglia3.0到3.1的过程中,消息的格式发生了重要的变化,不兼容之前的版本)

hadoop-metrics2.properties:用于hadoop与3.1版本以后的ganglia集成做监控的配置文件(本文采用此配置文件)

# vim hadoop-metrics2.properties

*.sink.file.class=org.apache.hadoop.metrics2.sink.FileSink
*.period=
*.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31
*.sink.ganglia.period=
*.sink.ganglia.slope=jvm.metrics.gcCount=zero,jvm.metrics.memHeapUsedM=both
*.sink.ganglia.dmax=jvm.metrics.threadsBlocked=,jvm.metrics.memHeapUsedM=
namenode.sink.ganglia.servers=master60:
datanode.sink.ganglia.servers=slave1:,slave62:

完整内容如下:

# syntax: [prefix].[source|sink].[instance].[options]
# See javadoc of package-info.java for org.apache.hadoop.metrics2 for details *.sink.file.class=org.apache.hadoop.metrics2.sink.FileSink
# default sampling period, in seconds
*.period= # The namenode-metrics.out will contain metrics from all context
#namenode.sink.file.filename=namenode-metrics.out
# Specifying a special sampling period for namenode:
#namenode.sink.*.period= #datanode.sink.file.filename=datanode-metrics.out #resourcemanager.sink.file.filename=resourcemanager-metrics.out #nodemanager.sink.file.filename=nodemanager-metrics.out #mrappmaster.sink.file.filename=mrappmaster-metrics.out #jobhistoryserver.sink.file.filename=jobhistoryserver-metrics.out # the following example split metrics of different
# context to different sinks (in this case files)
#nodemanager.sink.file_jvm.class=org.apache.hadoop.metrics2.sink.FileSink
#nodemanager.sink.file_jvm.context=jvm
#nodemanager.sink.file_jvm.filename=nodemanager-jvm-metrics.out
#nodemanager.sink.file_mapred.class=org.apache.hadoop.metrics2.sink.FileSink
#nodemanager.sink.file_mapred.context=mapred
#nodemanager.sink.file_mapred.filename=nodemanager-mapred-metrics.out #
# Below are for sending metrics to Ganglia
#
# for Ganglia 3.0 support
# *.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink30
#
# for Ganglia 3.1 support
*.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31 *.sink.ganglia.period= # default for supportsparse is false
# *.sink.ganglia.supportsparse=true *.sink.ganglia.slope=jvm.metrics.gcCount=zero,jvm.metrics.memHeapUsedM=both
*.sink.ganglia.dmax=jvm.metrics.threadsBlocked=,jvm.metrics.memHeapUsedM= # Tag values to use for the ganglia prefix. If not defined no tags are used.
# If '*' all tags are used. If specifiying multiple tags separate them with
# commas. Note that the last segment of the property name is the context name.
#
#*.sink.ganglia.tagsForPrefix.jvm=ProcesName
#*.sink.ganglia.tagsForPrefix.dfs=
#*.sink.ganglia.tagsForPrefix.rpc=
#*.sink.ganglia.tagsForPrefix.mapred= namenode.sink.ganglia.servers=master60: datanode.sink.ganglia.servers=slave1:,slave62: #resourcemanager.sink.ganglia.servers=yourgangliahost_1:,yourgangliahost_2: #nodemanager.sink.ganglia.servers=yourgangliahost_1:,yourgangliahost_2: #mrappmaster.sink.ganglia.servers=yourgangliahost_1:,yourgangliahost_2: #jobhistoryserver.sink.ganglia.servers=yourgangliahost_1:,yourgangliahost_2:

2、重启hadoop,在主NameNode节点上执行:

# /usr/local/hadoop/sbin/stop-all.sh

# /usr/local/hadoop/sbin/start-all.sh

3、重启所有Gmod端:

# service gmond restart

详细gmond.conf各参数参考资料:http://book.2cto.com/201309/32329.html

四、监控spark

支持Ganglia的Sink类别: GangliaSink

由于Licene的限制,默认没有放到默认的build里面,如果需要使用,需要自己编译

名称 默认值 描述
class org.apache.spark.metrics.sink.GangliaSink Sink类
host NONE Ganglia 服务器的主机名或multicast group
port NONE Ganglia服务器的端口
period 10 轮询间隔
unit seconds 轮询间隔的单位
ttl 1 TTL of messages sent by Ganglia
mode multicast Ganglia网络模式('unicast' or 'multicast')

参考资料:http://huaxin.blog.51cto.com/903026/1841208

使用Ganglia监控hadoop、hbase的更多相关文章

  1. Ganglia监控Hadoop集群的安装部署[转]

    Ganglia监控Hadoop集群的安装部署 一. 安装环境 Ubuntu server 12.04 安装gmetad的机器:192.168.52.105 安装gmond的机 器:192.168.52 ...

  2. Ganglia 监控Hadoop

    Ganglia监控Hadoop集群的安装部署 一. 安装环境 Ubuntu server 12.04 安装gmetad的机器:192.168.52.105 安装gmond的机 器:192.168.52 ...

  3. 使用ganglia监控hadoop及hbase集群

    一.Ganglia简介 Ganglia 是 UC Berkeley 发起的一个开源监视项目,设计用于测量数以千计的节点.每台计算机都运行一个收集和发送度量数据(如处理器速度.内存使用量等)的名为 gm ...

  4. 第十二章 Ganglia监控Hadoop及Hbase集群性能(安装配置)

    1 Ganglia简介 Ganglia 是 UC Berkeley 发起的一个开源监视项目,设计用于测量数以千计的节点.每台计算机都运行一个收集和发送度量数据(如处理器速度.内存使用量等)的名为 gm ...

  5. 使用ganglia监控hadoop及hbase集群 分类: B3_LINUX 2015-03-06 20:53 646人阅读 评论(0) 收藏

    介绍性内容来自:http://www.uml.org.cn/sjjm/201305171.asp 一.Ganglia简介 Ganglia 是 UC Berkeley 发起的一个开源监视项目,设计用于测 ...

  6. Ganglia监控Hadoop集群的安装部署

    一. 安装环境 Ubuntu server 12.04 安装gmetad的机器:192.168.52.105 安装gmond的机器:192.168.52.31,192.168.52.32,192.16 ...

  7. Ubuntu 14.10 下Ganglia监控Hadoop集群

    前提是已经安装好Ganglia和Hadoop集群 1 Master节点配置hadoop-metrics2.properties # syntax: [prefix].[source|sink|jmx] ...

  8. 【Hadoop】用 Ganglia 监控hadoop集群

    随着数据中心的增长和管理人员的缩减,对计算资源使用有效监视工具的需求变得比以往更加迫切.术语监视 在应用到数据中心时可能会让人混淆,因为它的含义会根据具体的说话者和听众而有所不同.例如: 在集群中运行 ...

  9. prometheus 监控 hadoop + Hbase + zookeeper

    1. run JMX exporter as a java agent with all the four daemons. For this I have added EXTRA_JAVA_OPTS ...

随机推荐

  1. mysql -workbench : Error cause by ' sql-mode = only-full-group-by'

    当mysql出现"only-full-group-by"问题时,是mysql的sql_mode设置出现了问题. 解决: 1.  找到mysql的 my.cnf文件,我的文件路径是: ...

  2. opencv配置(2.49)

    转载自浅墨大神http://blog.csdn.net/poem_qianmo/article/details/19809337 OpenCV2.4.9和2.4.8的配置几乎一样,唯一的区别在下文中的 ...

  3. poj3181 Dollar Dayz ——完全背包

    link:http://poj.org/problem?id=3181 本来很常规的一道完全背包,比较有意思的一点是,结果会超int,更有意思的解决方法是,不用高精度,用两个整型的拼接起来就行了.OR ...

  4. 生成new, old的 shell script

    #!/bin/bash #usage: ./create_dts_diff_v2.x.sh path1 path2 __new_dir=$1 __old_dir=$2 #=============== ...

  5. Mysql 数据库单机多实例部署手记

        最近的研发机器需要部署多个环境,包括数据库.为了管理方便考虑将mysql数据库进行隔离,即采用单机多实例部署的方式.找了会资料发现用的人也不是太多,一般的生产环境为了充分发挥机器性能都是单机单 ...

  6. CentOS6.8 MySQL 5.6实现主从复制

    主库操作 1.将mysqldump命令添加到/usr/bin中 ln -s /application/mysql/bin/mysqldump /usr/bin/ 2.开启master上的log-bin ...

  7. Angular2.0-组件

    截止到目前为止,Angular2.0完成了其alpha-32版本的开发,新的版本还在迭代开发当中,这其中有个问题,就是每个版本相比于以前的版本都会有一些改动,包括API方面的修改,这会导致很多基于以前 ...

  8. MongoDB丢数据问题的分析

    坊间有很多传说MongoDB会丢数据.特别是最近有一个InfoQ翻译的Sven的一篇水文(为什么叫做水文?因为里面并没有他自己的原创,只是搜罗了一些网上的博客,炒了些冷饭吃),其中又提到了丢数据的事情 ...

  9. [git]git开发流程

    git开发正确做法: 本地要有一个分支A和远端的分支保持对应 然后本地新开分支B开发,提交记录 如果需要将代码推送到远端的话,就切换回A,首先在A分支上pull同步远端的代码(pull还是fetch+ ...

  10. 字符串连接,数字tostring,写入文件

    #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int x=2410; in ...