Hbase -- Compact工具梳理

1. 背景

当前,线上HBase集群的自动Major Compact是关闭的,我们选择在凌晨业务空闲的时候进行手动触发Major Compact,Compact工具就是在运维平台上对资源组、RS、表进行Major Compact。目前线上有2种版本的Compact程序:Compact_v1和Compact,Compact_v1是基于Compact做了部分优化。在实际运行中,也发现有部分Compact任务运行失败,并且该工具目前处于无人运维的状态。本文对该工具从输入、代码流程、使用方法进行说明,并且后续会持续对该文档进行补充,增加线上运行失败的原因分析和改进。

2. Compact_v1

2.1 程序输入

序号参数名参数含义是否必选备注
1cluster集群名
2rsgroup资源组
3cmd执行命令类型,支持

compact_server、compact_rsgroup、compact_table

4parameter对应cmd的参数,如果是compact_server则为具体的机器名,如果是compact_rsgroup则为具体的rsgroup,如果是compact_table,则为具体的table
5batchSize一次批量添加任务的大小
6queueLimitMajor Compaction队列长度限制
7mcIntervalMajor Compaction时间间隔,单位毫秒
8mcTaskExecutionTimeMajor Compaction任务执行的时间,单位毫秒
9execute是否执行任务,如果为false,则仅输出执行计划
10compactNum执行Major Compaction的并发线程数默认为1

2.2 程序流程图

2.2.1 总体流程图

 

2.2.2详细流程图

图1是Compact_v1版本程序的详细流程图。

 

 

 

其中executePlan的流程图入图2所示:

 

  

ServerCompactBatchTask是集成了Callable<Boolean>的类,其中call方法的流程图如图3所示:

 

 

3 Compact

3.1 程序输入

序号

参数名

参数含义

是否必选

备注

1cluster集群名
2rsgroup资源组
3cmd执行命令类型,支持

compact_server、compact_rsgroup、compact_table

4parameter对应cmd的参数,如果是compact_server则为具体的机器名,如果是compact_rsgroup则为具体的rsgroup,如果是compact_table,则为具体的table
5batchSize一次批量添加任务的大小
6queueLimitMajor Compaction队列长度限制
7mcIntervalMajor Compaction时间间隔,单位毫秒
8mcTaskExecutionTimeMajor Compaction任务执行的时间,单位毫秒
9execute是否执行任务,如果为false,则仅输出执行计划

3.2 程序流程图

3.2.1 总体流程图

 

3.2.2 详细流程图

图4是Compact版本程序的总体流程图。

 

 

 

其中executePlan的方法的流程图如图5所示:

 

 

 

 

4. 两个程序的区别

序号区别备注
1compact_v1支持多线程对region执行compact,compact仅支持单线程
2compact_v1生成plan的时候,对plan中的region进行排序,compact没有
3compact_v1对plan队列的每个plan进行了排序,compact没有
4sleep的时间不一样,compact_v1短一点

5. Compact程序线上问题分析

目前线上因为Compact_v1有失败的,所以已经将所有的Compact_v1改为Compact任务。

通过查看代码,可以看到Compact_v1是基于Compact做了多个优化,包括可以多线程执行Compact、Region合并按照优先级的顺序执行,各台机器的Compact也是按照优先级排序 ,所以建议采用Compact_v1的代码。

线上执行Compact_v1有失败的问题,查看了运行日志,失败基本都是超时导致,没有打印出程序运行日志,所以目前先配置了几个Compact_v1的定时任务,通过增加日志的方式,每天查看任务运行状况。

后续进展会在这里描述。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值