首页 > BigData, HBase, HDFS, MapReduce > Hadoop/Hbase配置集成Ganglia

Hadoop/Hbase配置集成Ganglia

2012年11月11日 发表评论 阅读评论

Hadoop/Hbase是开源版的google Bigtable, GFS, MapReduce的实现,随着互联网的发展,大数据的处理显得越发重要,Hadoop/Hbase的用武之地也越发广泛。为了更好的使用Hadoop/Hbase系统,需要有一套完善的监控系统,来了解系统运行的实时状态,做到一切尽在掌握。Hadoop/Hbase有自己非常完善的metrics framework, 里面包种各种维度的系统指标的统计,另外,这套metrics framework设计的也非常不错,用户可以很方便地添加自定义的metrics。更为重要的一点是metrics的展示方式,目前它支持三种方式:一种是落地到本地文件,一种是report给Ganglia系统,另一种是通过JMX来展示。本文主要介绍怎么把Hadoop/Hbase的metrics report给Ganglia系统,通过浏览器来查看。

介绍后面的内容之前有必要先简单介绍一下Ganglia系统。Ganglia是一个开源的用于系统监控的系统,它由三部分组成:gmond, gmetad, webfrontend, 三部分是这样分工的:

  • gmond: 是一个守护进程,运行在每一个需要监测的节点上,收集监测统计,发送和接受在同一个组播或单播通道上的统计信息
  • gmetad: 是一个守护进程,定期检查gmond,从那里拉取数据,并将他们的指标存储在RRD存储引擎中
  • webfrontend: 安装在有gmetad运行的机器上,以便读取RRD文件,用来做前台展示

简单总结它们三者的各自的功用,gmond收集数据各个node上的metrics数据,gmetad汇总gmond收集到的数据,webfrontend在前台展示gmetad汇总的数据。Ganglia缺省是对系统的一些metric进行监控,比如cpu/memory/net等。不过Hadoop/Hbase内部做了对Ganglia的支持,只需要简单的改配置就可以将Hadoop/Hbase的metrics也接入到ganglia系统中进行监控。

接下来介绍如何把Hadoop/Hbase接入到Ganglia系统,这里的Hadoop/Hbase的版本号是0.94.2,早期的版本可能会有一些不同,请注意区别。Hbase本来是Hadoop下面的子项目,因此所用的metrics framework原本是同一套Hadoop metrics,但后面hadoop有了改进版本的metrics framework:metrics2(metrics version 2), Hadoop下面的项目都已经开始使用metrics2, 而Hbase成了Apache的顶级子项目,和Hadoop成为平行的项目后,目前还没跟进metrics2,它用的还是原始的metrics.因此这里需要把Hadoop和Hbase的metrics分开介绍。

Hadoop接入Ganglia:

  • 1. Hadoop metrics2对应的配置文件为:hadoop-metrics2.properties
  • 2. hadoop metrics2中引用了source和sink的概念,source是用来收集数据的, sink是用来把source收集的数据consume的(包括落地文件,上报ganglia,JMX等)
  • 3. hadoop metrics2配置支持Ganglia:
  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    #*.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink30
    *.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31
     
    *.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
     
    #uncomment as your needs
    namenode.sink.ganglia.servers=10.235.6.156:8649
    #datanode.sink.ganglia.servers=10.235.6.156:8649
    #jobtracker.sink.ganglia.servers=10.0.3.99:8649
    #tasktracker.sink.ganglia.servers=10.0.3.99:8649
    #maptask.sink.ganglia.servers=10.0.3.99:8649
    #reducetask.sink.ganglia.servers=10.0.3.99:8649

    这里需要注意的几点:

  • (1) 因为Ganglia3.1与3.0不兼容,需要根据Ganglia的版本选择使用GangliaSink30或者GangliaSink31
  • (2) period配置上报周期,单位是秒(s)
  • (3) namenode.sink.ganglia.servers指定Ganglia gmetad所在的host:port,用来向其上报数据
  • (4) 如果同一个物理机器上同时启动了多个hadoop进程(namenode/datanode, etc),根据需要把相应的进程的sink.ganglia.servers配置好即可

Hbase接入Ganglia:

  • 1. Hbase所用的hadoop metrics对应的配置文件是: hadoop-metrics.properties
  • 2. hadoop metrics里核心是Context,写文件有写文件的TimeStampingFileContext, 向Ganglia上报有GangliaContext/GangliaContext31
  • 3. hadoop metrics配置支持Ganglia:
  • 1
    2
    3
    4
    5
    6
    
    # Configuration of the "hbase" context for ganglia
    # Pick one: Ganglia 3.0 (former) or Ganglia 3.1 (latter)
    # hbase.class=org.apache.hadoop.metrics.ganglia.GangliaContext
    hbase.class=org.apache.hadoop.metrics.ganglia.GangliaContext31
    hbase.period=10
    hbase.servers=10.235.6.156:8649

    这里需要注意几点:

  • (1) 因为Ganglia3.1和3.0不兼容,所以如果是3.1以前的版本,需要用GangliaContext, 如果是3.1版的Ganglia,需要用GangliaContext31
  • (2) period的单位是秒(s),通过period可以配置向Ganglia上报数据的周期
  • (3) servers指定的是Ganglia gmetad所在的host:port,把数据上报到指定的gmetad
  • (4) 对rpc和jvm相关的指标都可以进行类似的配置
  1. 白海天
    2012年12月29日22:36 | #1

    很久没更新啦,小武哥,求继续深入

  2. 我是来测试的
    2013年4月18日14:02 | #2

    文中的gmetad应该是gmond

  3. 2013年4月22日21:46 | #3

    不是, gmetad和gmond是两个不同的daemon@我是来测试的

  1. 本文目前尚无任何 trackbacks 和 pingbacks.
您必须在 登录 后才能发布评论.