前言:之前有朋友加好友与我探讨一些问题,我觉得这些问题倒挺有价值的;于是就想在本公众号开设一个问答专栏,方便技术交流与分享,专栏名就定为:《读者来信》。欢迎关注本人微信公众号《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相关的指标,分别是totalCompactingKVscurrentCompactedKVs。其实指标 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. Hibernage错误:Could not open Hibernate Session for transaction

    今天客户发来的错误,是SSH框架做的项目,是用户在登陆时候出现的错误,但刷新之后就没问题. 提示错误:Could not open Hibernate Session for transaction. ...

  2. Lambda 语法

    1.java8 Lambda表达式语法简介 (此处需要使用jdk1.8或其以上版本) Lambd表达式分为左右两侧 * 左侧:Lambda 表达式的参数列表 * 右侧:Lambda 表达式中所需要执行 ...

  3. 教你用纯Java实现一个网页版的Xshell(附源码)

    前言 最近由于项目需求,项目中需要实现一个WebSSH连接终端的功能,由于自己第一次做这类型功能,所以首先上了GitHub找了找有没有现成的轮子可以拿来直接用,当时看到了很多这方面的项目,例如:Gat ...

  4. 深入理解 vertical-align 属性

    语法 用来指定行内元素或表格元素的垂直对齐方式 相对父元素的值 baseline 使元素的基线与父元素的基线对齐.HTML规范没有详细说明部分可替换元素的基线,如textarea,这意味着这些元素使用 ...

  5. 解析Laravel框架下的Contracts契约

    Contracts Laravel 的契约是一组定义框架提供的核心服务的接口, 例如我们在介绍用户认证的章节中到的用户看守器契约IllumninateContractsAuthGuard 和用户提供器 ...

  6. Geotools在shapefile路网数据中建立缓冲区,并获取缓冲区内的要素

    记录一下如何创建创建缓冲区并获取缓冲区内的要素,便于以后查找使用 static SimpleFeatureSource featureSource = null; static CoordinateR ...

  7. anconda添加镜像源

    # anaconda 安装镜像源 ***     在使用安装 conda 安装某些包会出现慢或安装失败问题,最有效方法是修改镜     像源为国内镜像源.     之前都选用清华镜像源,但是2019年 ...

  8. 998. 最大二叉树 II

    最大树定义:一个树,其中每个节点的值都大于其子树中的任何其他值. 给出最大树的根节点 root. 就像之前的问题那样,给定的树是从表 A(root = Construct(A))递归地使用下述 Con ...

  9. 如何简单的将手机投屏在windows上(可在电脑上直接操作手机)

    首先附上要使用的scrcpy源地址 接下来是如何使用(我用的是安卓手机+win10): 下载好后,首先使用数据线连接手机到电脑,并且手机需要打开开发人员选项(不知道如何打开的自行百度): 打开到安装s ...

  10. 洛谷1378 油滴扩展 dfs进行回溯搜索

    题目链接:https://www.luogu.com.cn/problem/P1378 题目中给出矩形的长宽和一些点,可以在每个点放油滴,油滴会扩展,直到触碰到矩形的周边或者其他油滴的边缘,求出剩余面 ...