前言:之前有朋友加好友与我探讨一些问题,我觉得这些问题倒挺有价值的;于是就想在本公众号开设一个问答专栏,方便技术交流与分享,专栏名就定为:《读者来信》。欢迎关注本人微信公众号《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工作笔记】

读者来信 | 如何判断HBase Major Compact是否执行完毕?(已解决)的更多相关文章

  1. 读者来信 | 如果你家HBase集群Region太多请点进来看看,这个问题你可能会遇到

    前言:<读者来信>是HBase老店开设的一个问答专栏,旨在能为更多的小伙伴解决工作中常遇到的HBase相关的问题.老店会尽力帮大家解决这些问题或帮你发出求救贴,老店希望这会是一个互帮互助的 ...

  2. 读者来信 | 刚搭完HBase集群,Phoenix一启动,HBase就全崩了,是什么原因?(已解决)

    前言:之前有朋友加好友与我探讨一些问题,我觉得这些问题倒挺有价值的:于是就想在本公众号开设一个问答专栏,方便技术交流与分享,专栏名就定为:<读者来信>.如遇到本人能力有限难以解决的问题,我 ...

  3. 读者来信-5 | 如果你家HBase集群Region太多请点进来看看,这个问题你可能会遇到

    前言:<读者来信>是HBase老店开设的一个问答专栏,旨在能为更多的小伙伴解决工作中常遇到的HBase相关的问题.老店会尽力帮大家解决这些问题或帮你发出求救贴,老店希望这会是一个互帮互助的 ...

  4. HBase的compact分析

    HBase是基于LSM树存储模型的分布式NoSQL数据库.LSM树对比普遍的B+树来说,能够获得较高随机写性能的同时,也能保持可靠的随机读性能(可参考这里).在进行读请求的时候,LSM树要把多个子树( ...

  5. HBase什么时候作minor major compact

    HBase什么时候做minor major compact我们都知道compact分为两类,一类叫Minor compact ,一类叫Major compact,两者有什么区别呢?两者的区别在于:Mi ...

  6. 读者来信 | 设置HBase TTL必须先disable表吗?(已解决)

    今日有朋友加好友与我探讨一些问题,我觉得这些问题倒挺有价值的:于是就想在本公众号开设一个问答专栏,方便技术交流与分享,专栏名就定为:<读者来信>.如遇到本人能力有限难以解决的问题,该贴将会 ...

  7. 关于hasNextInt判断后无限循环输出else项的解决办法

    话不多说,上来就是干! import java.util.Scanner; public class Test_hasNextInt { /** * @param args */ public sta ...

  8. HBase 高性能获取数据(多线程批量式解决办法) + MySQL和HBase性能测试比较

    摘要:   在前篇博客里已经讲述了通过一个自定义 HBase Filter来获取数据的办法,在末尾指出此办法的性能是不能满足应用要求的,很显然对于如此成熟的HBase来说,高性能获取数据应该不是问题. ...

  9. js判断flash文件是否加载完毕

    轮询判断加载进度 img的加载完成有onload方法,一直不知道该怎么判断swf文件是否加载完毕了? 在应用中使用了轮询判断加载进度值PercentLoaded是否达到100,经测试,可以达到效果. ...

随机推荐

  1. 大型Java进阶专题(三) 软件架构设计原则(下)

    前言 ​ 今天开始我们专题的第二课了,本章节继续分享软件架构设计原则的下篇,将介绍:接口隔离原则.迪米特原则.里氏替换原则和合成复用原则.本章节参考资料书籍<Spring 5核心原理>中的 ...

  2. aosp Pixel 修改 SIM 卡支持及解决网络带x问题

    去除网络X的方法 adb shell settings put global captive_portal_https_url http://g.cn/generate_204 自己用 php 做一个 ...

  3. OpenGL 实践之贝塞尔曲线绘制

    说到贝塞尔曲线,大家肯定都不陌生,网上有很多关于介绍和理解贝塞尔曲线的优秀文章和动态图. 以下两个是比较经典的动图了. 二阶贝塞尔曲线: 三阶贝塞尔曲线: 由于在工作中经常要和贝塞尔曲线打交道,所以简 ...

  4. python第一次作业

    import turtle turtle.pensize(2) turtle.pencolor("black") turtle.fillcolor("red") ...

  5. Python3 面向对象之:单继承

    一:什么面向对象的继承? 比较官方的说法就是: 继承(英语:inheritance)是面向对象软件技术当中的一个概念.如果一个类别A“继承自”另一个类别B,就把这个A称为“B的子类别”,而把B称为“A ...

  6. javaScript 基础知识汇总 (十二)

    1.属性的标志和描述符 属性的标志 对象属性除value外还有三个特殊属性,即标志 writable ----如果为true,则可以修改,否则它只是只读的. enumerable ----如果为tru ...

  7. Jupyter NoteBook 系列之 安装启动和常用设置

    介绍 Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,目前支持运行 40 多种编程语言. Jupyter Notebook 的本质是一个 Web 应 ...

  8. PowerShell初探

    Windows PowerShell是一种命令行外壳程序和脚本环境,它内置在每个受支持的Windows版本中(Windows 7/Windows 2008 R2和更高版本),使命令行用户和脚本编写者可 ...

  9. Python之split()函数

    在Python的高级特性里有切片(Slice)操作符,可以对字符串进行截取.Python还提供split()函数可以将一个字符串分裂成多个字符串组成的列表. split()的语法挺简单的: str.s ...

  10. dom&JavaScript&Jquery

    目录 dom&JavaScript&Jquery 建节点 添加节点 删除节点: 替换节点: 属性节点 获取值操作 class的操作 指定CSS操作 操作节点 获取input用户输入 操 ...