获取Region监控信息页面:

http://regionServerName:16030/jmx?qry=Hadoop:service=HBase,name=RegionServer,sub=Regions

 获得数据如下

Hbase JMX 监控 - Region_数据

参数代表含义

*** 为前缀代表:Namespace_${namespace}_table_${tableName}_region_${regionName}

 

***_metric_storeCount

当前region中store个数,即列簇个数

***_metric_storeFileCount

当前region中storeFile个数

***_metric_memStoreSize

当前region的MemStoreSize,该值达到某一特定条件会flush到磁盘,生成一个storefile,每次MemStore Flush时,会对Store进行检验,如果Store中的StoreFile数量大于hbase.hstore.compactionThreshold 时,就会触发Compaction

***_metric_storeFileSize

当前region storeFIles 大小,即每个region大小,单位为byte(字节)

***_metric_compactionsCompletedCount

完成Compaction次数

***_metric_compactionsFailedCount

Compaction失败次数

***_metric_numBytesCompactedCount

完成Compaction总大小

***_metric_numFilesCompactedCount

完成Compaction总文件数量

***_metric_readRequestCount

读请求数量,scan 1000条数据,该值会增加1000;get获取数据该数据存在会增加1,数据不存在不会增加;count 数据也会增加该值,count数据量多少,则增加多少

***_metric_filteredReadRequestCount

使用过滤的读请求数

***_metric_writeRequestCount

写请求数量

***_metric_compactionsQueuedCount

压缩队列大小

***_metric_maxCompactionQueueSize

该region最大一次Compaction队列大小

***_metric_maxFlushQueueSize

该region最大一次MemStore刷新队列数量

***_metric_flushesQueuedCount

当前MemStore Flush 队列数量

***_metric_maxStoreFileAge

storeFile存在最大时间,单位ms

***_metric_minStoreFileAge

storeFile存在最小时间,单位ms

***_metric_avgStoreFileAge

storeFile存在平均时间,单位ms

***_metric_lastMajorCompactionAge

最后一次执行MajorCompaction时间距离现在多久,单位毫秒

***_metric_putCount

put数据次数,重复数据也会增加该值

***_metric_deleteCount

删除数据次数

***_metric_scanCount

scan数据次数;count也会增加该值,注意是后台查询的次数,比如 count 'tbName',{CACHE=>500},count 'tbName',{CACHE=>1000}执行的次数是不同的

***_metric_getCount

get查询数据次数

***_metric_appendCount

 

***_metric_incrementCount

 

 

 

更多参数获取逻辑可阅读源码

实现类:org.apache.hadoop.hbase.regionserver.MetricsRegionWrapperImpl

http://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/regionserver/MetricsRegionWrapperImpl.html

举例:获取 maxStoreFileAge,在org.apache.hadoop.hbase.regionserver.HStroe 类中

@Override
public long getMaxStoreFileAge() {
  long earliestTS = Long.MAX_VALUE;
  for (StoreFile s: this.storeEngine.getStoreFileManager().getStorefiles()) {
    StoreFile.Reader r = s.getReader();
    if (r == null) {
      LOG.warn("StoreFile " + s + " has a null Reader");
      continue;
    }
    if (!s.isHFile()) {
      continue;
    }
    long createdTS = s.getFileInfo().getCreatedTimestamp();
    earliestTS = (createdTS < earliestTS) ? createdTS : earliestTS;
  }
  long now = EnvironmentEdgeManager.currentTime();
  return now - earliestTS;
}