Hbase三大机制-MemoryStore Flush

MemoryStore Flush的触发时机

首先flush的单位是Region(一个region中可能存在多个MS)不是memoryStore

  • 某一个MemoryStore大小超过128M(默认)
  • Region中的MemoryStore的总大小超过256M
  • RegionServer中的JVM的40%,从MemoryStore中Region开始刷新,直到小于阈值即停止
  • RegionServer中HLog数量达到上限时,从最早的HLog对应的Region刷新
  • 定时1小时刷新
  • 手动刷新

以上几种触发方式解决了以下问题:

  • 某一个MS过大
  • 每个MS都不大,但是总量大的问题
  • 定时刷新解决了长时间不刷新的问题
  • 手动刷新提供了用户自行操作的入口

Flush的过程

  • prepare阶段:

    首先建立一个新的kvset,然后给当前的kv集合拍一个快照,之后的数据都写入新的kvset

    查询数据会在快照中和新的kvset中查找,并且在这个过程中会加一把写锁

  • flush阶段:

    然后将快照的数据持久化到临时目录/.tmp

  • commit阶段*

    遍历所有memeryStore,将临时目录下的文件拷贝到列族的目录下,针对HFile生成StoreFile,Reader,方便读取数据。然后清理快照

几种触发机制对读写的影响

  • 除了RegionServer级别(不包括HLog)其他的对读写影响都比较少。

    这种情况会影响整个regionServer的读写,造成这种情况的原因大过是Region的个数太多了,数据太分散了。

    一般50-80即可

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值