hbase Compact流程

    科技2025-08-16  24

    hbase Compaction 

    以牺牲磁盘io来换取读性能的基本稳定

    小合并:一个region下一个store中的部分HFile合并成一个比较大的StoreFile.

    大合并:一个region下一个store中的所有HFile合并成一个更大的HFile.会清理ttl过期,版本超限定,标记删除的数据。

    合并流程:

    1.hbase基于1、Memstore Flush(每次memstore在flush之后都会判断是否触发Compaction) 2、后台线程周期性检查、3、手动触发 某种触发条件触发Compaction.

    2.hbase会单独有一个线程进行从该store中选择合适的HFile。

    3.针对小合并,大合并,split等操作都会有对应的线程池进行处理

    4.分别读出待合并Hfile文件的数据(K,V),进行归并排序,之后写到./tmp临时文件中。

    5.将临时文件移动到对应的Store的数据目录

    6.将Compaction的输入文件路径和输出路径封装成KV写入到HLog日志,并打上Compaction标记,最后强制执行sync。

    7.将对应的Store数据目录下的Compaction输入文件全部删除。

    优缺点

    会尽量提高数据的本地化率,因为有些文件是在远程节点存储,通过Compaction会尽量本地化。降低数据读取响应延时,减少网络IO。

    在Compaction过程中会对读请求造成较大的毛刺,为了使文件数趋于稳定,在操作过程中会有带宽压力和IO压力。

    以牺牲短时间的性能资源来换取后续查询的稳定。

    在Compaction过程中也会对写请求造成阻塞,比如Hfile较多时,达到默认配置可能会限制写请求的速度或者短时间的阻塞。

    Processed: 0.011, SQL: 8