Hbase三大机制-合并文件流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U5aT9Qk8-1615722510864)(assets/image-20201207005131351.png)]

compact的类型

  • Minor Compact 合并一部分小文件,不会处理标记删除,过期的数据
  • Major Compact 合并所有的文件,处理标记删除,过期的数据,一般会关闭自动合并,在低峰时期手动合并

触发的时机

  • MemoryStore flush时,发现storefile的数量大于某个阈值时
  • 后台程序定时检查,首先检查是否满足上面的条件,然后在检查最早的时间是否是7天前的,然后执行Major Compact
  • 手动触发,无论minor compact 还是 major compact 都可以手动

合并流程

如上图:

  • 由于上面原因触发
  • 选择hfile,主要是希望合并IO 负载重 ,容量小的文件
  • 挑选合适的线程池
  • 执行合并

选择HFile策略

排除HFile识别合并类型
  • 排除正在合并的文件及比它新的文件,因为他们都可能需要合并
  • 排除某些过大的文件

识别合并类型

  • 是否手动强制major 合并
  • 长时间未合并,并待选文件小10个
  • 含有reference文件,因为这种文件时split产生的,需要major处理后才能去做monior 合并

如果以上要求都不满足就是minor 合并

Minor 合并的选取文件策略

RatioBasedCompactionPolicy

从老到新扫描文件然后找到一个 hfile size < 更新的file的总和 * ratio,这样就可以从这个界限比它更新的文件

其实就是总文件的一个占比,然后合并这个占比的小文件

ExploringCompactionPolicy

在以上的基础上选择最后的一个位置(待验证,不理解)

选择线程池

compact 和 split 动作 由一个统一的线程进行处理CompactSplitThead,这个线程构造了small copaction线程池,large compaction 线程池,根据合并总文件的大小是否大于throttlePoint进行选择

开始合并

  • 由旧到新扫描KV复制到一个临时目录/.tmp ,此时还没有合并
  • 将临时目录的数据拷贝到region目录下
  • 将合并的输入文件路径和输出文件路径写入WAL,然后合并(为了合并失败的情况能删除临时数据)
  • 最后将region目录中的输入文件删除
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值