Ganglia 是 UC Berkeley 发起的一个开源监视项目,设计用于測量数以千计的节点。每台计算机都执行一个收集和发送度量数据(如处理器速度、内存使用量等)的名为 gmond 的守护进程。它将从操作系统和指定主机中收集。

接收全部度量数据的主机能够显示这些数据而且能够将这些数据的精简表单传递到层次结构中。正由于有这样的层次结构模式,才使得
Ganglia 能够实现良好的扩展。

gmond 带来的系统负载很少,这使得它成为在集群中各台计算机上执行的一段代码,而不会影响用户性能。

Ganglia监控软件主要是用来监控系统性能的软件,如:cpu
、mem、硬盘利用率, I/O负载、网络流量情况等,通过曲线非常easy见到每一个节点的工作状态。对合理调整、分配系统资源,提高系统总体性能起到重要作用。

hadoop和hbase非常好地支持了ganglia这个开源监控工具,说明ganglia是hadoop生态中不可或缺的一部分。

本文介绍假设用ganglia收集hbase的各种指标。重点解决两个大家比較关注的问题:

(1) hbase指标过多,怎样过滤?

(2) 改动hadoop-metrics.properties 后,是否能不用重新启动hadoop或hbase。

一、hbase  metrics 配置

以 hbase-0.98为例,须要配置 hadoop-metrics2-hbase.properties

# 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
*.period=10 # Below are some examples of sinks that could be used
# to monitor different hbase daemons. # hbase.sink.file-all.class=org.apache.hadoop.metrics2.sink.FileSink
# hbase.sink.file-all.filename=all.metrics # hbase.sink.file0.class=org.apache.hadoop.metrics2.sink.FileSink
# hbase.sink.file0.context=hmaster
# hbase.sink.file0.filename=master.metrics # hbase.sink.file1.class=org.apache.hadoop.metrics2.sink.FileSink
# hbase.sink.file1.context=thrift-one
# hbase.sink.file1.filename=thrift-one.metrics # hbase.sink.file2.class=org.apache.hadoop.metrics2.sink.FileSink
# hbase.sink.file2.context=thrift-two
# hbase.sink.file2.filename=thrift-one.metrics # hbase.sink.file3.class=org.apache.hadoop.metrics2.sink.FileSink
# hbase.sink.file3.context=rest
# hbase.sink.file3.filename=rest.metrics *.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31
*.sink.ganglia.period=10 hbase.sink.ganglia.period=10
hbase.sink.ganglia.servers=172.18.144.198:8648

ganglia 3.1及以上版本号须要用这个类:org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31

重新启动hbase和gmod 就能够在ganglia  web界面上看到众多指标出来了。可是,指标太多了。 到region级别的了,每一个 region属于哪个 table。每一个table又一堆指标。从ganglia的rrd数据库中能够看到:

-rw-rw-rw- 1 hadoop root 12216 Jul 23 16:40 regionserver.Regions.Namespace_default_table_o_m_ocs_ordersplitamount_region_f15998ced89264146b3ec3888db625f6_metric_scanNext_max.rrd
-rw-rw-rw- 1 hadoop root 12216 Jul 23 16:40 regionserver.Regions.Namespace_default_table_o_m_forest_maps_region_cb5490455403d92ff2e6acd17c2b3877_metric_get_95th_percentile.rrd
-rw-rw-rw- 1 hadoop root 12216 Jul 23 16:40 regionserver.Regions.namespace_default_table_o_s_peking_orders_region_bc87e3d9b61ee8c14956914d407ad11c_metric_mutateCount.rrd
-rw-rw-rw- 1 hadoop root 12216 Jul 23 16:40 regionserver.Regions.namespace_default_table_o_m_ocs_ordersplitamount_region_5ca4ba7d83369781b41c939d260fdcdd_metric_mutateCount.rrd
-rw-rw-rw- 1 hadoop root 12216 Jul 23 16:40 regionserver.Regions.namespace_default_table_o_m_ocs_orderamount_region_3ecd8c8440eae5a1191ef9e6e523ea9f_metric_appendCount.rrd
-rw-rw-rw- 1 hadoop root 12216 Jul 23 16:40 regionserver.Regions.Namespace_default_table_o_m_ocs_orderamount20140722_region_985afc00551d4fb68ceaf9188f5b9d12_metric_get_75th_percentile.rrd
-rw-rw-rw- 1 hadoop root 12216 Jul 23 16:40 regionserver.Regions.namespace_default_table_o_m_ocs_orderamount20140722_region_9672e9b9ea759fc1aee838e4ae228fa9_metric_memStoreSize.rrd
-rw-rw-rw- 1 hadoop root 12216 Jul 23 16:40 regionserver.Regions.Namespace_default_table_o_m_chat_analysis_session20140722_region_d709618a5b60e44a03befe57ca480ef9_metric_get_num_ops.rrd

http://hbase.apache.org/book/hbase_metrics.html    这个上面提到一个warning to ganglia user:

Warning to Ganglia Users: by default, HBase will emit a LOT of metrics per RegionServer which may swamp your installation. Options include either increasing Ganglia server capacity, or configuring HBase to emit fewer metrics.





hbase 默认会吐那么多指标出来。我们得想办法过滤。保留我们须要的指标即可。

以下说明怎样过滤

二、指标过滤

 非常幸运hadoop metrics system提供了过滤功能。 hbase的指标监控计划:

(1) master:  去除Assignment,Balancer, Filtersystem.MetaHlog 。以及各percentile、max、median、min。保留mean平均值

(2) regionserver:去除WAL相关,以及各percentile、max、median、min,保留mean平均值

(3) region:太多,表级别的,所有去除。

*.source.filter.class=org.apache.hadoop.metrics2.filter.RegexFilter
#*.source.filter.class=org.apache.hadoop.metrics2.filter.GlobFilter
*.record.filter.class=${*.source.filter.class}
*.metric.filter.class=${*.source.filter.class}
*.period=10 *.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31
*.sink.ganglia.period=10 hbase.sink.ganglia.metric.filter.exclude=^(.*table.*)|(\\w+metric)|(\\w+region\\w+)|(Balancer\\w+)|(\\w+Assign\\w+)|(\\w+percentile)|(\\w+max)|(\\w+median)|(\\w+min)|(MetaHlog\\w+)|(\\w+WAL\\w+)$
hbase.sink.ganglia.period=10
hbase.sink.ganglia.servers=<span style="font-family: Arial, Helvetica, sans-serif;">172.18.144.198</span><span style="font-family: Arial, Helvetica, sans-serif;">:8648</span>

用正則表達式的Filter。

改动之后,重新启动 hbase和gmod,在ganglia web console  上就能够看到指标少了,清爽了非常多,更有针对性了。


三、hadoop metrics system 管理


注意到前两步的改动配置的操作后,都须要重新启动hbase才生效,由于metric system 是随着hbase 的启动而启动的。

假设hbase已经在线服务了。暴力stop会影响服务。graceful_stop则会涉及到数据的暂时迁移。都不理想,最好是不重新启动。


以下讲到怎样单独管理hadoop metrics system的启动和停止。

 hadoop 生态是人多力量大。这个也考虑到了,metrics system 子系统向外暴露了 Mbean,利用 JMX就能够对它进行控制。

首先我们要开启 JMX。


 hbase-env.sh

 
export HBASE_JMX_BASE="-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS $HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=10101"
export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS $HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=10102"
export HBASE_THRIFT_OPTS="$HBASE_THRIFT_OPTS $HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=10103"
export HBASE_ZOOKEEPER_OPTS="$HBASE_ZOOKEEPER_OPTS $HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=10104"
export HBASE_REST_OPTS="$HBASE_REST_OPTS $HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=10105"

这一步没办法。要重新启动hbase。事实上一開始就能够仅仅开启JMX,重新启动一次。

后面的 metrics配置都能够单独来启动和停止的。


 



通过  Jconsole能够看到。MetricsSystem提供了四个操作,我们须要的是start和stop。測试环境也许能够用jconsole或其他工具去连,可是生产环境就不行了。

想想我们的hadoop集群是用ganglia和nagios结合使用的。ganglia收集数据。图表展现。nagios 收集数据,监控报警,这简直绝配。假设将jmx的功能集成到nagios中就更好了。


查了下,nagios的确有jmx插件,可是nagios就是个check再报警的机制。没有操作的行为。

不好将metric system的启动和停止放在nagios中。仅仅能另起一炉灶,用JMXToolkit 和 shell脚本搞定。



JMXToolkit 比較简单,网上资料非常多。在使用过程中有一些要注意的地方。

git clone https://github.com/larsgeorge/jmxtoolkit.git
cd jmxtoolkit
vim build.xml # 改动hbase版本号为 0.98.1-hadoop2
ant

ant编译后生成 build/hbase-0.98.1-hadoop2-jmxtoolkit.jar  ,这个jar是我们终于想要的。

再看配置文件。build/conf/hbase-0.98.1-hadoop2-jmx.properties

不知道jmxtoolkit内部实现是怎么样的,这里面的指标名称都不正确。也不全。并且我们仅仅是须要操作metrics system,将这个文件自己编辑了下:

[hbaseMetricsSystem]
@object=Hadoop:service=HBase,name=MetricsSystem,sub=Control
@url=service:jmx:rmi:///jndi/rmi://${HOSTNAME}:${PORT}/jmxrmi
@user=${USER|controlRole}
@password=${PASSWORD|password}
*stop=VOID
*start=VOID

重命名 build/hbase-0.98-metrics.properties

注意 object 就是上面jconsole截图中的metrics system的 objectName,而 *stop和*start则是 Mbean 提供的方法。

測试:

java -cp hbase-0.98.1-hadoop2-jmxtoolkit.jar   org.apache.hadoop.hbase.jmxtoolkit.JMXToolkit -f hbase-0.98-metrics.properties  -o hbaseMetricsSystem -q stop

/etc/init.d/gmond restart

能够看到改动的指标生效了。

最后。写个简单的shell,扔到生产环境上去。

#!/bin/bash

# manage the metrics system of hbase individually.
# ./hbase-metrics-system.sh start
# ./hbase-metrics-system.sh stop config_file_template=hbase-0.98-metrics.properties
config_file_product=hbase-0.98-metrics-product.properties #for i in ${hbase_hostnames=[@]};do
for i in `cat $HBASE_HOME/conf/regionservers`;do
cp ${config_file_template} ${config_file_product}
sed -i "s/\${HOSTNAME}/$i/g" ${config_file_product}
sed -i "s/\${PORT}/10102/g" ${config_file_product}
java -cp hbase-0.98.1-hadoop2-jmxtoolkit.jar org.apache.hadoop.hbase.jmxtoolkit.JMXToolkit -f ${config_file_product} -o hbaseMetricsSystem -q $1
echo "$1 metrics system of $i"
/bin/rm ${config_file_product}
done echo "done"

办法有点简陋,先攻克了再说。

ganglia收集hbase的metrics的更多相关文章

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

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

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

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

  3. hbase ganglia监控配置

    hbase ganglia 显示器 hbase 构造 hadoop-metrics2-hbase.properties *.sink.ganglia.class=org.apache.hadoop.m ...

  4. [转载] 一共81个,开源大数据处理工具汇总(下),包括日志收集系统/集群管理/RPC等

    原文: http://www.36dsj.com/archives/25042 接上一部分:一共81个,开源大数据处理工具汇总(上),第二部分主要收集整理的内容主要有日志收集系统.消息系统.分布式服务 ...

  5. Ambari Metrics 详解

    Ambari Metrics 原理 Ambari Metrics System 简称为 AMS,它主要为系统管理员提供了集群性能的监察功能.Metrics 一般分为 Cluster.Host 以及 S ...

  6. 一共81个,开源大数据处理工具汇总(下),包括日志收集系统/集群管理/RPC等

    作者:大数据女神-诺蓝(微信公号:dashujunvshen).本文是36大数据专稿,转载必须标明来源36大数据. 接上一部分:一共81个,开源大数据处理工具汇总(上),第二部分主要收集整理的内容主要 ...

  7. 大数据高可用集群环境安装与配置(08)——安装Ganglia监控集群

    1. 安装依赖包和软件 在所有服务器上输入命令进行安装操作 yum install epel-release -y yum install ganglia-web ganglia-gmetad gan ...

  8. hbase官方文档(转)

    FROM:http://www.just4e.com/hbase.html Apache HBase™ 参考指南  HBase 官方文档中文版 Copyright © 2012 Apache Soft ...

  9. HBase官方文档

    HBase官方文档 目录 序 1. 入门 1.1. 介绍 1.2. 快速开始 2. Apache HBase (TM)配置 2.1. 基础条件 2.2. HBase 运行模式: 独立和分布式 2.3. ...

随机推荐

  1. 微信小程序组件解读和分析:二、scroll-view可滚动视图区域

    scroll-view可滚动视图区域组件说明: 可滚动视图区域. 组件用法:纵向滚动用法 Tip: 使用竖向滚动时,需要给一个固定高度,通过 WXSS 设置 height,否则无法滚动. 当滚动到顶部 ...

  2. acm练习-day1

    描述现在,有一行括号序列,请你检查这行括号是否配对.输入第一行输入一个数N(0<N<=100),表示有N组测试数据.后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于1 ...

  3. jsp学习笔记 - 内置对象 pageContext

    1.pageContext几乎可以操作所有的页面内置对象 pageContext.getRequest();    得到的对象只是属于ServletRequest类,httpServletReques ...

  4. 用PHP开发自己的独立博客(一)——概述

    开篇废话:因为重新回归朝九晚五的生活,于是就想开始写技术博客,当是做技术文档了.于是试用了各类博客,CSDN.cnblogs都还不错.简单试用了一下,说说各自的特点. CSDN的界面不能定制,使用默认 ...

  5. acedssget

    大多数ObjectARX函数在处理选择集和实体时,都用名字来识别选择集或实体,该名字用一个长整型对来表示的,并对AutoCAD来维护.在ObjectARX中,该名字的类型为ads_name.在对选择集 ...

  6. docker 部署spring.boot项目【一】(引用外部配置文件)

    上一篇随笔,nginx是启动运行在容器内,spring.boot的web项目是运行在宿主内,这一篇的目的,是把web项目也制作成镜像,然后在容器里启动. 文件目录结构如下: 主要文件结构说明:(1)b ...

  7. linux常用操作记录

    vim:多行注释 vim中多行注释和多行删除命令,这些命令也是经常用到的一些小技巧,可以大大提高工作效率.   多行注释:   1. 首先按esc进入命令行模式下,按下Ctrl + v,进入列(也叫区 ...

  8. 【IDEA】【Git】pull代码始终无法pull到最新的代码或者提示pull no items 【解决方式】

    最近pull代码老是提示pull no items,但是本地并不是最新的代码,看了各种博客始终无法解决,最后靠自己的方式解决.下面是解决方法. 方法:1.首先git --> repository ...

  9. rem js 自适应布局

    (function(doc, win) { resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',//o ...

  10. js中的三种弹框分别是alert(),confirm(),prompt()

    1.alert(): ①写在<script>标签中 ②括号中的内容为字符串或者整型 ③点击确认即可关闭,无返回值 2.confirm(): ①写在<script>标签中 ②括号 ...