关于Memstore的大小设置一点经验。

Hbase的Memstore固化为Hfile的主要触发条件为三个:
1、Hlog的存储文件数目达到上限32(默认配置),一个Hlog的大小默认配置为HDFS的block的95%,这样的话,假定HDFS的块大小为64M,32个文件的话,可以存储的数据量为2G左右。 如果当Hlog的数据达到这个值后,会根据seqid把一些老的region 固化到Hfile中。

2、Memstore的大小设置为64M(默认配置),如果大于这个值则触发Flush的操作,大于64*3时,这个region将阻止put的写入操作。

3、RS上的内存达到内存配置下限0.35(hbase.regionserver.global.memstore.lowerLimit),上限为0.4,这里为了防止OOM,进行put操作的流控。 这里有有一个算法,选择compaction压力小,且Memstore相对大的region。

Region server在运行过程中,在达到上述三个任何一个条件后,都会触发Flush的操作。如果在写量比较大的系统上,我们尽量要采用第2种方式来Flush,以减轻compaction的压力。因为在Hbase中compaction是单线程处理,我们要尽量减少IO操作和compaction的数量。

经过测试,关于memstore在写量比较大的情况下一般的设置规则为:

If 方式3 成立
活跃 Regions = (HBASE_HEAPSIZE *memstore.lowerLimit )/( flush.size / (2~3))
else if 方式 1
活跃 Regions = (Hlognumber*hdfsblock)/ (flush.size / (2~3))
else
我们期望的状态

解释说明;
1、为了防止过小的Hfile 这里取Flush.size 的1/3 为最小的File大小(如果使用gz等压缩算法,Hfile将非常小了。
2、活跃的region就是一个region server上在某一段时间只有部分region在写入数据,其他的处于假死状态。
3、通过上述公式,我们发现如果内存比较大的情况下,我们应该适当提高Hlog的存储数量,否则很容易导致条件1产生的Hfile,产生小文件。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值