设为首页 加入收藏

TOP

Hbase中compaction的触发条件
2019-04-14 13:50:06 】 浏览:89
Tags:Hbase compaction 触发 条件

下列三个条件可能会触发compaction请求:

1. memstore flush之后触发;

2. 客户端通过shell或者API触发;

3. 后台线程CompactionChecker定期触发,周期为:hbase.server.thread.wakefrequency*hbase.server.compactchecker.interval.multiplier。

触发了compaction请求后,真正的compaction操作能否执行,还有进行一系列的条件验证。在此只对众多条件中的一种做以记录,即由hbase.hregion.majorcompaction和hbase.hregion.majorcompaction.jitter控制的一组条件。这是一个store是否需要major compaction的一组验证条件,hbase.hregion.majorcompaction表示一个基数,hbase.hregion.majorcompaction.jitter表示一个比率,在0.96.2中,前者默认为7天,后者默认为0.2。

此条件的验证逻辑为:

1. 在hbase.hregion.majorcompaction的上下浮动区间hbase.hregion.majorcompaction*hbase.hregion.majorcompaction.jitter中,得到的一个随机值mcTime,在0.96.2中,mcTime的值为[7-7*0.2天,7+7*0.2天);

2. 获取一个store中所有storefile的最晚更新时间lowTimestamp。如果该store中没有storefile,说明不需要进行major compaction,结束本次验证;

3. 如果距当前时间的mcTime时段以内,没有文件被修改,即lowTimestamp < (当前时间 - mcTime),则转向4,否则说明不需要进行major compaction,结束本次验证;

4. 如果该store中有多个storefile,则表示需要进行major compaction。否则说明只有一个storefile,转向5;

5. 如果storefile中包含满足TTL条件的数据,则需要进行major compaction,否则不需要。

上述验证逻辑可见0.96.2的RatioBasedCompactionPolicy#isMajorCompaction方法。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇hbase、hadoop环境搭建及客户端访.. 下一篇hbase并行scan

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目