分享

hbase 什么情况下触发split和major compact

muyannian 发表于 2014-12-23 19:09:15 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 1 15192
hbase 什么情况下触发split和major compact

已有(1)人评论

跳转到指定楼层
bioger_hit 发表于 2014-12-23 19:09:47
HBase中的major compact功能中,参数hbase.hregion.majorcompaction已经设为0了,
日志中发现还是会major compact。
有3种方式,可以激发major compact
1) 通过hbase shell命令 major_compact进行触发
2) compact when file <= sum(smaller_files) *
'hbase.hstore.compaction.ratio'
    这种情况是选中的文件数量等于store中的文件数量时,会有minor compact升级为major compact
3) major compact时间间隔到期: after (now - min(StoreFile.timestamp)) >
"hbase.hregion.majorcompaction" + rand() *
hbase.hregion.majorcompaction.jitter"
至于split,并不是设置了hbase.hregion.max.filesize(默认10G)为很大就保证不split了,需要有以下的算法,参见
IncreasingToUpperBoundRegionSplitPolicy是0.94.0默认region split策略
  这里的split有一个判断条件,先计算这tableRegionsCount(regionserver上的这个table的online的region个数),
然后循环计算此region的所有store是否太大,这是通过getSizeToCheck方法计算出一个size,若当前的store总大小大于这个值,则表示此region需要split.
getSizeToCheck的计算方法首先判断tableRegionsCount是否等于0,若是则返回hbase.hregion.max.filesize ,若不是,则计算Math.min(getDesiredMaxFileSize(),
this.flushSize * (tableRegionsCount * tableRegionsCount)。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条