监控HBase集群

转载 2013年12月02日 22:29:28

任何生产系统的一个关键点就是运维人员监控其状态和表现的能力。当问题发生时,运维人员最不希望做的事情就是筛查数GB或TB的日志来搞清楚系统的状态和问题的根源。没有人愿意为搞清楚发生了什么情况而去阅读跨多台服务器的成千上万行日志记录。这种情况下,你记录的详细指标开始发挥作用。在一个像HBase这样达到生产品质的数据库里发生着很多事情,每件事情可以用不同的方法进行测量。这些测量结果被系统输出出来,可以被用来记录它们的外部框架所捕获,然后提供给运维人员使用。

注意 由于涉及到许多组件,无论就构成系统的不同组件还是就运营规模而言,在分布式系统中运维是尤其困难的。

收集和图形指标显示的功能并不是HBase独有的,在任何一个成功的系统中都可以找到这样的功能,无论其规模大小。但是不同的系统实现的方式有所不同。本节中,我们将讨论HBase如何输出这些指标,以及用来捕获这些指标和透过这些指标了解集群性能表现的框架。我们还会讨论HBase输出的指标、其含义、以及如何使用这些指标在问题发生时告警。

提示 我们建议,甚至在采用HBase的原型阶段就应该建立起完整的指标收集、图形显示和监控体系。这可以帮助你熟悉运营HBase的各个方面,并且有利于更顺畅地过渡到生产环境。此外,当系统接受访问请求时,能够看到表示这些请求的漂亮的图形也是件有趣的事情。因为你会更加了解在应用与HBase交互时底层系统都发生了什么,所以这在应用系统的开发进程中也会有所帮助。

1 HBase如何输出指标

这种指标框架是HBase依赖于Hadoop的另一个体现。HBase与Hadoop紧密结合在一起,HBase使用Hadoop的底层指标框架来输出自己的指标信息。在编写本书的时候,HBase还在使用指标框架v1(metrics framework v1)[1] 。让HBase使用更新更好指标框架版本的工作正在进行中[2] ,但还没有完成。

除非你想涉足这些框架的开发,否则没有必要去深究指标框架的具体实现方法。如果你的目标是框架开发的话,请你务必深入了解那些代码。但如果你只是对在你的应用系统中使用HBase指标感兴趣的话,你只需要知道如何配置框架和输出指标的方法即可,这就是我们接下来要讨论的内容。

这种指标框架的工作方式是基于对MetricsContext接口的context实现来输出指标信息。你可以使用的两个预装的实现是:Ganglia context和File context。除了这两个context实现之外,HBase还可以使用Java Management Extensions(JMX)[3] 来输出指标。

2 收集和图形展示指标

指标方案涉及两部分功能:收集(collection)和图形展示(graphing)。通常这两部分功能都被内建在同一个框架下,但这并不是必须的。收集功能用来收集被监控的系统产生的指标信息,并将这些指标信息高效存储起来,以便将来可以使用。这部分功能也会按照日、月或年为单位执行汇总的工作。大多数情况下,超过一年的细粒度指标数据和同一个指标的年度汇总数据一样没有什么用处。

图形展示功能使用收集框架捕获和存储的数据,以图形和漂亮图片的形式展示出来,方便最终用户查看。运维人员查看这些图形,可以快速洞察系统的状态。通过在图形上设置阀值,你可以轻松了解系统是否运行在预期范围里。根据这些图形,当墨菲定律生效[4] 时(可能超过阈值的指标一定会超过阈值)你可以采取措施以免最终应用受到影响

现在有很多种收集和图形展示工具可以使用。但并不是所有的工具都能够紧密集成Hadoop和HBase输出指标的方式。你的选择被限定在Ganglia(原生支持Hadoop指标框架)或者一些通过JMX收集指标信息的框架。

GANGLIA

Ganglia(http://ganglia.sourceforge.net/[5] 是一种被设计用来监控集群的分布式监控框架。它是在加州大学伯克利分校开发的开源项目。Hadoop和HBase社区一直使用它作为监控集群的业界标准方案。

为了配置HBase把指标信息输出到Ganglia,你需要设置$HBASE_HOME/conf/目录下的hadoop-metrics.properties文件中的参数。你需要配置的内容取决于你选择使用的Ganglia版本。对于3.1以前的版本,应该使用GangliaContext。而3.1及以后的版本,应该使用GangliaContext31。对于Ganglia3.1及以后的版本,我们配置hadoop-metrics.properties文件如下所示:

hbase.class=org.apache.hadoop.metrics.ganglia.GangliaContext31

hbase.period=10

hbase.servers=GMETADHOST_IP:PORT

jvm.class=org.apache.hadoop.metrics.ganglia.GangliaContext31

jvm.period=10

jvm.servers=GMETADHOST_IP:PORT

rpc.class=org.apache.hadoop.metrics.ganglia.GangliaContext31

rpc.period=10

rpc.servers=GMETADHOST_IP:PORT

当你完成Ganglia的安装和配置,并且使用这些配置属性启动HBase守护进程后,Ganglia的指标列表会显示HBase输出的指标信息,如图10.1所示。

10.1 设置用Ganglia收集HBase的指标信息。注意下拉指标列表中的HBase和JVM指标列表。

JMX

除了使用Hadoop指标框架输出指标信息之外,HBase也可以通过JMX输出指标信息。一些开源工具,例如Cacti和OpenTSDB,可以通过JMX收集指标信息。JMX指标信息也可以透过Master和RegionServer的web用户界面以JSON格式查看:

Master的JMX 指标信息: http://master_ip_address:port/jmx

某个特定RegionServer的JMX 指标信息: http://region_server_ip _address:port/jmx

Master的默认端口是60010,RegionServer的默认端口是60030.

基于文件

HBase还可以被设置把指标信息输出到平面文件里。指标信息自动添加到文件末尾。基于context实现的不同,添加的指标信息可以带或者不带时间戳。因为基于文件的指标信息以后难以使用,所以这不是一个令人满意的记录指标的方法。虽然我们没有遇到过把指标信息记录到文件里进行动态监控的产品,但这仍然是记录指标信息供将来分析的一种选择。

为了把指标信息记录到文件里,hadoop-metrics.properties文件的配置内容如下所示:

hbase.class=org.apache.hadoop.hbase.metrics.file.TimeStampingFileContext

hbase.period=10

hbase.fileName=/tmp/metrics_hbase.log

jvm.class=org.apache.hadoop.hbase.metrics.file.TimeStampingFileContext

jvm.period=10

jvm.fileName=/tmp/metrics_jvm.log

rpc.class=org.apache.hadoop.hbase.metrics.file.TimeStampingFileContext

rpc.period=10

rpc.fileName=/tmp/metrics_rpc.log

让我们看看HBase输出的这些指标,你可以利用它们来洞察集群的健康状况和性能。



[1] Hadoop指标框架v1,Apache Software Foundation,http://mng.bz/J92f

[2] Hadoop指标框架v2,Apache Software Foundation,http://mng.bz/aOEI

[3] Qusay H. Mahmoud, “Getting Started with Java Management Extensions (JMX): Developing Management and Monitoring Solutions,” Oracle Sun Developer Network, January 6, 2004, http://mng.bz/619L

[4] 你一定听说过墨菲定律: http://en.wikipedia.org/wiki/Murphy’s_law

[5] Monitoring with Ganglia,Matt Massie等编写,预计2012年11月发行,全面介绍了监控和Ganglia。参见http://mng.bz/Pzw8

CDH 维护日志,集群查看

1        Hbase日常运维  aA 1.1       监控Hbase运行状况 1.1.1       操作系统 1.1.1.1 IO a.    群集网络IO,磁盘IO,HDFS ...
  • cs261244787
  • cs261244787
  • 2015年08月25日 09:42
  • 4603

HBase总结(十七)Ganglia监控hadoop、hbase集群

1. 在主节点上安装ganglia-webfrontend和ganglia-monitor sudo apt-get install ganglia-webfrontend gang...
  • lifuxiangcaohui
  • lifuxiangcaohui
  • 2014年10月15日 11:49
  • 2575

如何监控你的Hadoop+Hbase集群?

前言  监控hadoop的框架有不少,如CDH的CM组件和Ambari都可以监控他们自己的hadoop,但是它不能监控apache的hadoop,如果你是使用原生的Apache Hadoop,那...
  • u010454030
  • u010454030
  • 2016年03月21日 16:21
  • 475

HBase基本数据操作详解

2014-11-11 14:35 891人阅读 评论(0) 收藏 举报 HBase基本数据操作详解【完整版,绝对精品】 存储,学习,共享 原文:  http://blog.csdn.net/u...
  • linlinv3
  • linlinv3
  • 2015年04月30日 12:59
  • 7082

Java API 与Hbase集群交互常用操作总结

HBase 与 Hadoop 一样,都是用 Java 编写的,所以 HBase 对 java 支持是必需的,下面看看怎么使用java 语言对 HBase 进行操作。Java API 核心类总结如下:...
  • z69183787
  • z69183787
  • 2016年10月22日 21:38
  • 1797

Hbase API管理功能4-集群状态信息

调用HBaseAdmin.getClusterStatus()可以查询ClusterStatus实例,这个实例包含了整个集群的信息。这个类也有setter,但是通过set方法修改的仅仅是本地副本的变量...
  • chenwei825825
  • chenwei825825
  • 2013年12月17日 23:18
  • 1179

通过 JMX 获取Hadoop/HBase监控数据

概述 说到对Hadoop和 HBase的集群监控,大家知道的和用的最多的可能还是第三方的监控工具,cacti,ganglia,zabbix之类的。玩的深一些的,会用 zenoss之类的。这些工具...
  • sun7545526
  • sun7545526
  • 2015年04月09日 22:05
  • 4057

Zabbix分布式集群监控

Zabbix分布式集群监控1.监控对象1、分布式文件系统HDFS 2、分布式离线计算框架MapReduce 3、分布式流式计算框架Storm 4、分布式消息队列KafKa 5、分布式内存计算框架Spa...
  • qq_25371579
  • qq_25371579
  • 2017年01月12日 00:40
  • 1629

HBase集群监控那些事儿

为什么需要监控? 为了保证系统的稳定性,可靠性,可运维性。 掌控集群的核心性能指标,了解集群的性能表现; 集群出现问题时及时报警,便于运维同学及时修复问题; 集...
  • TG229dvt5I93mxaQ5A6U
  • TG229dvt5I93mxaQ5A6U
  • 2017年10月25日 00:00
  • 418

监控HBase集群

任何生产系统的一个关键点就是运维人员监控其状态和表现的能力。当问题发生时,运维人员最不希望做的事情就是筛查数GB或TB的日志来搞清楚系统的状态和问题的根源。没有人愿意为搞清楚发生了什么情况而去阅读跨多...
  • qiaochao911
  • qiaochao911
  • 2013年12月02日 22:29
  • 1407
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:监控HBase集群
举报原因:
原因补充:

(最多只允许输入30个字)