开发者社区> 问答> 正文

HBase在什么情况下会触发flush操作?

HBase在什么情况下会触发flush操作?

展开
收起
游客fbdr25iajcjto 2021-12-05 23:26:53 904 0
1 条回答
写回答
取消 提交回答
  • •MemStore级别限制:当Region中任意一个MemStore的大小达到了上限(hbase.hregion.memstore.flush.size,默认128MB),会触发MemStore刷新。

    •Region级别限制:当Region中所有MemStore的大小总和达到了上限(hbase.hregion. memstore.block.multiplier *hbase.hregion.memstore.flush.size),会触发MemStore刷新。

    •RegionServer级别限制:当RegionServer中MemStore的大小总和超过低水位阈值hbase.regionserver.global.memstore.size.lower.limit*hbase.regionserver.global.memstore.size,RegionServer开始强制执行flush,先flush MemStore最大的Region,再flush次大的,依次执行。如果此时写入吞吐量依然很高,导致总MemStore大小超过高水位阈值hbase.regionserver.global.memstore.size,RegionServer会阻塞更新并强制执行flush,直至总MemStore大小下降到低水位阈值。

    •当一个RegionServer中HLog数量达到上限(可通过参数hbase.regionserver.maxlogs配置)时,系统会选取最早的HLog对应的一个或多个Region进行f lush。

    •HBase定期刷新MemStore :默认周期为1小时,确保MemStore不会长时间没有持久化。为避免所有的MemStore在同一时间都进行flush而导致的问题,定期的f lush操作有一定时间的随机延时。

    •手动执行flush :用户可以通过shell命令f lush 'tablename'或者f lush'regionname'分别对一个表或者一个Region进行f lush。

    2021-12-05 23:28:10
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
大数据时代的存储 ——HBase的实践与探索 立即下载
Hbase在滴滴出行的应用场景和最佳实践 立即下载
阿里云HBase主备双活 立即下载