1、简介
Compaction是从一个Region的一个Store中选择部分HFile文件进行合并。其目的为了减少 HFile 的个数跟清理掉过期和删除的数据。
合并原理是,先从这些待合并的数据文件中依次读出KeyValue,再由小到大排序后写入一个新的文件。之后,这个新生成的文件就会取代之前已合并的所有文件对外提供服务。
HBase根据合并规模将Compaction分为两类:Minor Compaction和Major Compaction。
- Minor Compaction是指选取部分小的、相邻的HFile,将它们合并成一个更大的HFile。
- Major Compaction是指将一个Store中所有的HFile合并成一个HFile,这个过程还会完全清理三类无意义数据:被删除的数据、TTL过期数据、版本号超过设定版本号的数据。一般情况下,Major Compaction持续时间会比较长,整个过程会消耗大量系统资源,对上层业务有比较大的影响。因此线上部分数据量较大的业务通常推荐关闭自动触发Major Compaction功能,改为在业务低峰期手动触发(或设置策略自动在低峰期触发)。
1.1 相关配置文件
这些参数都与 HBase 中的压缩(compaction)相关,压缩是 HBase 中用于优化存储和提高性能的一种机制。下面我将逐一解释这些参数的含义:
1. **hbase.regionserver.minorcompaction.pagecache.drop**:
- 这个参数决定了是否在执行小型压缩(minor compaction)后丢