`

HBase Metrics机制、架构

 
阅读更多

HBase Metrics

HBase Metrics是一种监控信息实时收集机制。它负责收集的信息有:

  • 功能性信息(Compaction Queue、Store Files个数等)
  • JVM使用信息 (Heap Memory 的变化)
  • rpc访问信息

借助与Hadoop Metrics同样的方式,向Ganglia汇报。

Ganglia is a scalable distributed monitoring system for high performance computing systems such as clusters and Grids.

  • based on a hierarchical design targeted at federations of clusters
  • relies on a multicast-based listen/announce protocol to monitor state within clusters
  • uses a tree of point-to-point connections amongst representative cluster nodes to federate clusters and aggregate their state
  • XML for data representation
  • XDR for compact, portable data transport
  • RRDtool for data storage and visualization

Ganglia的架构图:

 

Ganglia相关特性:

  • gmond(Ganglia-monitor)负责收集本节点或者本集群内的的build-in Metrics.例如/proc下系统提供的资源使用状况。
  • Application-Level的信息可以发送给gmond,也可以直接发送给gmetad。

HBase Metrics的设计架构

HBase Metrics借助HadoopMetrics的实现,默认延续了Metrics 1的配置方式。

这里以RegionServer内RegionServerMetrics为例,阐述数据收集流程。

1)RegionServerMetrics根据classpath下conf/hadoop-metrics.properties的配置,创建一个Context实例

# 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=192.168.1.151:8650

在配置中,hbase.class指定的Context实例的实现是org.apache.hadoop.metrics.ganglia.GangliaContext31,类图的结构关系如下。

 

  • RegionServerMetrics实现了Updater接口,实现了doUpdater(MetricsContext)的方法。
  • RegionServerMetrics构造函数中,将自己注册到GangliaContext31。
  • 创建MetricsRecord,加载到GangliaContext31里。
  • 启动startMonitoring()过程。在AbstractMetricsContext里,是TimeTask来作为一个线程,周期性调用doUpdater().

2) HRegionServer周期性的执行doMetrics()方法。

该方法只更新在RegionServerMetrics定义的metrics对象,周期性更新的间隔是由”hbase.regionserver.msginterval”决定。

3)GangliaContext31获取Metrics的更新,然后发送给Ganglia。

该方法会将MetricsRecord发送给Ganglia的Gmond或者Gmetad。

注意:该过程的周期性间隔时间,是由conf/hadoop-metrics.properties文件的hbase.period的值来控制。

整体过程的框架图如下:

使用更加简洁的语言描述:

1)被监控的对象或者系统,实现Updater接口,注册到监控系统的Context中。

 

 
2)被监控的系统会根据自己的时间步调对需要采集的数据进行更新。
 
3)监控系统内置的TimeTask,则会根据自己的更新周期(period),调用Updater的接口,从被监控对象获取MetricsRecord,并按照Context的接口emitRecord的方法,将数据写入文件、第三方接收端、或者不处理(NullContextWithUpdateThread)。

Metrics机制特性总结

  • 降低HBase内核与Metrics模块的接口耦合性。支持多种Metrics机制的emitRecord方式。
  • 降低服务内部Metrics更新步调与监控数据收集的依赖性。更新数据是内存操作,而如果Fetch操作是网络操作,而且,是由其它线程独立来处理。
  • Push操作使用Non-blocking的Connectionless package delivery service(DatagramPacket)来实现。采集的信息很多,可以忽略网络的可靠性,从而使得Push操作不是瓶颈。

HBase Metrics机制配置

1、Metrics种类

种类 功能
hbase metrics 支持Hbase功能型参数的输出
jvm metrics 支持HMaster、Regionserver 的JVM虚拟机监控信息输出
rpc metrics 支持rpc监控信息输出

2、配置的方式

第一种配置方式:

在${HBASE_HOME}/conf/hadoop-properties中,取消相关注释项。例如我们以hbase metrics为例。

hbase.class=org.apache.hadoop.metrics.ganglia.GangliaContext31   #标识了hbase metrics采用哪一个上下文来发送数据
hbase.period=500 #见上图
hbase.servers=192.168.15.224:8649

这里的hbase.servers=192.168.15.224:8649标识了一个GMond的IP:PORT.

这里请注意两点:

1)保证所有需要发送Metrics的节点的Ganglia-monitor要存在。因为如果该Daemon Crash之后,即使Hbase相关的Metrics发送到其它节点的GMond,也无法显示。

2)注意在gmetad.conf中添加需要监控的节点。

data_source “my cluster” localhost 10.1.4.104 10.1.4.105 10.1.4.106 10.1.4.107 10.1.4.108 10.1.4.109 10.1.4.110 10.1.4.111 10.1.4.112  #这里默认使用8649端口

 

第二种配置方式:

配置Metrics输出成文件格式。同样在${HBASE_HOME}/conf/hadoop-properties中,取消相关注释项。例如我们以jvm metrics为例。

# Configuration of the “jvm” context for file
# jvm.class=org.apache.hadoop.hbase.metrics.file.TimeStampingFileContext
# jvm.fileName=/tmp/metrics_jvm.log  # 这样JVM监控信息相关数据会发送到本地文件。

自定义Metrics的方式

很多情况下,我们希望从HBase中获取我们更加感兴趣的值,或者我们把这些监控信息发送到其它节点上去。实际上,这些工作都可以借助原有的HBase Metrics的框架来实现。

整个过程大概需要这么几步:

1)在AbstractMetricsContext类的继承实现相关的doUpdater方法。

2)配置相关的hadoop-metrics.properties的配置项。

分享到:
评论

相关推荐

    HBase架构图

    - HBase的监控和调优,包括JMX、HBase Metrics、Ganglia和Ambari的使用 - HBase的故障恢复和高可用性方案 - 使用HBase Shell进行基本操作和高级功能,如扫描器设置 - HBase与其他大数据组件(如Spark、Hive、Phoenix...

    大数据【经典书籍】:HBase不睡觉书 带目录(高清)【608页】.zip

    HBase的监控和运维也是重点内容之一,包括使用ZooKeeper进行协调、通过HBase Metrics进行性能监控、以及如何通过Ambari等工具进行集群管理。这部分内容对于大型HBase集群的运维人员来说尤为实用。 最后,书中可能还...

    HBase Administration Cookbook

    最后,你还将了解到如何使用HBase的监控和日志系统,如HBase Metrics和Hadoop的HDFS日志,以获取系统状态信息,及时发现和解决问题。 总之,《HBase Administration Cookbook》是一本全面介绍HBase管理实践的书籍,...

    Hbase实战

    HBase的开源特性使其内部机制透明,可以通过源码学习其数据分布、并发控制、故障恢复等机制。 总结,HBase是一款强大的大数据存储解决方案,理解和掌握其核心概念、架构及操作是充分利用其优势的关键。通过实战应用...

    基于HadoopHBase的一淘搜索离线系统PPT课件.pptx

    - **HBase扩展开发**:为了适应大规模数据处理,进行了定制化开发,如Load Balance插件、Region Split/Merge插件和工具,扩展了ThriftServer API,增强MapReduce库支持,增加更多Metrics指标,并开发了多种...

    Jstorm开源技术架构最佳实践.pptx

    Scheduler的不断演进,如User Defined Metrics和Backpressure 2.0、Topology Master等,提升了系统的整体稳定性和可监控性。 JStorm的开源社区活跃,不断推动其向前发展,未来有望在性能、易用性、功能扩展等方面...

    NoSQL数据库技术数据库资源调度平台架构实践.pdf

    它将各种不同类型的数据库如Redis、MC、MySQL、HBase等统一描述为资源,抽象出通用的操作接口,便于管理和维护。此外,Shanks还具备强大的自我修复能力,能够自动恢复大部分异常,减少人工干预,从而提升了系统的...

    openTSDB

    通过使用批量写入和延迟写入机制,OpenTSDB 可以有效地减少对 HBase 的压力。查询方面,OpenTSDB 提供了多种查询语法,包括范围查询、聚合查询以及标签过滤,确保在大数据量下也能快速响应。 ### 6. 脚本学习 ...

    Apache Hadoop---Ambari.docx

    Hadoop在这里指的是整个生态系统,包括但不限于HDFS、MapReduce、Hive、Pig、HBase、Zookeeper、Sqoop和HCatalog等组件。 Ambari的核心概念包括: 1. **Resource**: 表示可管理资源的抽象,如服务、组件和主机节点...

    Hadoop源码分析(完整版)

    Google发布的五篇论文(Google Cluster, Chubby, GFS, BigTable, MapReduce)详细介绍了其技术架构,这些技术理念直接影响了Apache Hadoop项目的发展。在Hadoop源码分析中,我们能看到这些Google技术的影子,例如...

    滴滴实时计算平台在运营监控方面的应用.pdf

    Yarn作为资源调度器,通过FairScheduler支持Node Label机制、队列别名和ACL权限管理,优化了调度性能,并实现了Metrics配置的动态调整和TimelineServer的集成。 总的来说,滴滴的实时计算平台在运营监控中的应用...

    Hadoop源代码分析完整版

    - **metrics**: 收集系统统计数据。 - **util**: 工具类集合。 - **record**: 根据数据描述语言自动生成编解码函数。 - **http**: 基于Jetty的HTTP服务器,用于展示系统状态和日志。 - **log**: 日志记录模块。 ###...

    Hadoop源代码分析(完整版).pdf

    #### 二、Hadoop项目架构分析 - **包结构及其依赖关系**:Hadoop项目中包含多个子项目,各子项目之间存在复杂的依赖关系。 - **包conf**:用于读取系统配置,依赖于fs包,以便读取配置文件时使用文件系统。 - **...

    Hadoop源代码分析 pdf 文字版

    - **metrics**:收集系统性能统计数据。 - **util**:工具类集合。 - **record**:根据数据描述语言自动生成编解码函数。 - **http**:基于Jetty的HTTP服务器,提供Web界面监控系统状态。 - **log**:日志管理...

    Hadoop源代码分析(完整版)

    - **BigTable** → **HBase**:构建在HDFS之上,用于处理大规模结构化数据的数据库。 - **MapReduce** → **Hadoop MapReduce**:分布式数据处理框架。 此外,还有Facebook的Hive等基于Hadoop生态的开源项目,用于...

    hadoop代码分析

    - **整体架构**:Hadoop项目内部包的依赖关系较为复杂,这是因为Hadoop旨在提供一个高度灵活且可扩展的平台。这种设计使得Hadoop能够适应不同的应用场景,并能够与多种文件系统(包括本地文件系统和云存储系统)无缝...

    Spark大数据处理数据性能优化学习

    Spark支持多种数据源,如HDFS、Cassandra、HBase等,选择合适的数据源和格式可以显著提升I/O性能。另外,使用缓存机制(如persist或cache)可以将常用数据驻留在内存,减少重复计算。 执行计划优化是另一个重要环节...

    hadoop 源码分析全

    这些论文详细阐述了Google构建其分布式计算平台的关键技术和架构,其中包括: - **Google Cluster**:提供了关于Google内部大规模集群管理与操作的具体细节。 - **Chubby**:一种分布式锁服务,用于解决分布式环境...

Global site tag (gtag.js) - Google Analytics