读者来信|如何判断HBaseMajorCompact是否执行完毕?(已解决)

database

前言:之前有朋友加好友与我探讨一些问题,我觉得这些问题倒挺有价值的;于是就想在本公众号开设一个问答专栏,方便技术交流与分享,专栏名就定为:《读者来信》。欢迎关注本人微信公众号《HBase工作笔记》,扫描文末二维码解锁更多姿势!

来信人:罗*铭

小猿提问

如何判断HBase Major Compact是否执行完毕?

小猿解答

这里提供两种查看方式:

一种是HBase WebUI 界面; 另外一种是HBase Shell命令行 。

我们下面看一下。

1. HBase WebUI

点击Web首页Compactions按钮查看每一个RS Compact完成情况;

点击ServerName进入RS Web页后点击Compaction Metrics可查看该RS上每一个Region Compact 完成情况。

2. HBase Shell

通过Shell方式查看同WebUI查看大同小异,只不过没有将这些指标可视化而已。如果有兴趣,可以自己采集这些指标做一个漂亮的监控界面~

通过命令 status "simple" 可查看HBase RS级别的一些指标,其中 compactionProgressPct=1.0 即表明RS Compact完成。如下:

hbase(main):002:0> status "simple"

active master: xxx.xx.xx.xx:6000 1539254611835

1 backup masters

xxx.xx.xx.xx:6000 1539254627238

4 live servers

xxx.xx.xx.xx:6002 1575619570126

requestsPerSecond=211.0,

numberOfOnlineRegions=293,

usedHeapMB=4861,

maxHeapMB=16384,

numberOfStores=293,

numberOfStorefiles=432,

storefileUncompressedSizeMB=97691,

storefileSizeMB=35689,

compressionRatio=0.3653,

memstoreSizeMB=891,

storefileIndexSizeMB=0,

readRequestsCount=738897443,

writeRequestsCount=717989941,

rootIndexSizeKB=5413,

totalStaticIndexSizeKB=149724,

totalStaticBloomSizeKB=63325,

totalCompactingKVs=1389414755,

currentCompactedKVs=1389414755,

compactionProgressPct=1.0,

coprocessors=[HBaseSimHashSetBuildSystem, MultiRowMutationEndpoint]

xxx.xx.xx.xx:6002 1575619966048

...

0 dead servers

Aggregate load: 962, regions: 1176

通过命令 status "detailed" 可查看HBase RS Region 级别的一些指标,其中 compactionProgressPct=1.0 即表明RS Compact完成。如下:

hbase(main):002:0> status "detailed"

active master: xxx.xx.xx.xx:6000 1539254611835

1 backup masters

xxx.xx.xx.xx:6000 1539254627238

4 live servers

xxx.xx.xx.xx:6002 1575619570126

"namespace:table,20,1577443984105.518a1fbd9dd64e5956e591fa23556f48."

numberOfStores=1,

numberOfStorefiles=1,

storefileUncompressedSizeMB=0,

lastMajorCompactionTimestamp=0,

storefileSizeMB=0,

memstoreSizeMB=0,

storefileIndexSizeMB=0,

readRequestsCount=0,

writeRequestsCount=0,

rootIndexSizeKB=0,

totalStaticIndexSizeKB=0,

totalStaticBloomSizeKB=0,

totalCompactingKVs=332285,

currentCompactedKVs=332285,

compactionProgressPct=1.0,

completeSequenceId=-1,

dataLocality=1.0

"namespace:table,1f,1577443984105.61c4ba95dbed1eb52da78c448e2f4bbf."

...

0 dead servers

知识点补充

1. 计算公式

在上面的Shell命令行输出中我们还看到有两个与Compact相关的指标,分别是totalCompactingKVs 与 currentCompactedKVs。其实指标 compactionProgressPct 正是由二者计算得来,如下:

float compactionProgressPct = Float.NaN;

if( this.totalCompactingKVs > 0 ) {

compactionProgressPct = Float.valueOf(

this.currentCompactedKVs / this.totalCompactingKVs);

}

2. 小版本bug

可能有的朋友会发现自己家的 HBase compactionProgressPct 指标出现了大于100% 情况,或是 currentCompactedKVs>totalCompactingKVs 等情况,其实这是HBase小版本出现的一个bug,该bug在 2.0.0-beta 版本中才修复完毕。相关jira 如下:

  • HBASE-19767
  • HBASE-15906
  • HBASE-11979

转载请注明出处!欢迎关注本人微信公众号【HBase工作笔记】

以上是 读者来信|如何判断HBaseMajorCompact是否执行完毕?(已解决) 的全部内容, 来源链接: utcz.com/z/533058.html

回到顶部