本文主要介绍冷热分层 compaction 策略的优缺点和使用说明。
默认情况下,在设置冷热分离时间分界点后,需要等待系统下一次执行完 compaction(周期为 3.5 天~10.5 天内的随机数),或者手动执行 major_compact 命令后,数据才能按照冷热分离分界进行迁移。在这种情况下,每次 compaction 都会与冷存文件进行交互,导致 compaction 流程变慢,影响系统稳定性。
为解决这一问题,HBase 新增冷热分层 compaction 策略,以加速 compaction 流程。该功能优缺点如下,请根据业务实际情况合理选择。
优点:降低 compaction 压力,避免每次 major compaction 必然选中冷存⽂件。而是仅在超过冷存文件阈值后,会一次性对所有冷存文件进行 compaction。
缺点:延迟冷存⽂件的 compaction,会导致读冷存时读放大,冷存容量也会增大。
说明
该功能仅对开启冷热分离的表生效。
在 HBase Shell 中执行以下命令,启用冷热分层 compaction 策略。
alter 'table', CONFIGURATION => {'hbase.hstore.defaultengine.compactionpolicy.class' => 'org.apache.hadoop.hbase.regionserver.compactions.TieredCompactionPolicy'}
开启后,根据资源使用情况调整 major compaction 的文件冗余个数。
alter 'table', CONFIGURATION => {'hbase.regionservers.compactions.tiered.file.max.num' => 2}
说明:阈值设置为 2 表示允许冷存中存储 2 份 major compaction 后生成的冷文件,即第 3 次 major compaction 时会读冷文件。