You need to enable JavaScript to run this app.
导航
Compaction 策略说明
最近更新时间:2024.09.12 17:16:06首次发布时间:2024.09.12 17:16:06

本文主要介绍冷热分层 compaction 策略的优缺点和使用说明。

背景介绍

默认情况下,在设置冷热分离时间分界点后,需要等待系统下一次执行完 compaction(周期为 3.5 天~10.5 天内的随机数),或者手动执行 major_compact 命令后,数据才能按照冷热分离分界进行迁移。在这种情况下,每次 compaction 都会与冷存文件进行交互,导致 compaction 流程变慢,影响系统稳定性。

为解决这一问题,HBase 新增冷热分层 compaction 策略,以加速 compaction 流程。该功能优缺点如下,请根据业务实际情况合理选择。

  • 优点:降低 compaction 压力,避免每次 major compaction 必然选中冷存⽂件。而是仅在超过冷存文件阈值后,会一次性对所有冷存文件进行 compaction。

  • 缺点:延迟冷存⽂件的 compaction,会导致读冷存时读放大,冷存容量也会增大。

使用方式

说明

该功能仅对开启冷热分离的表生效。

  1. 在 HBase Shell 中执行以下命令,启用冷热分层 compaction 策略。

    alter 'table', CONFIGURATION => {'hbase.hstore.defaultengine.compactionpolicy.class' => 'org.apache.hadoop.hbase.regionserver.compactions.TieredCompactionPolicy'}
    
  2. 开启后,根据资源使用情况调整 major compaction 的文件冗余个数。

    alter 'table', CONFIGURATION => {'hbase.regionservers.compactions.tiered.file.max.num' => 2}
    

    说明:阈值设置为 2 表示允许冷存中存储 2 份 major compaction 后生成的冷文件,即第 3 次 major compaction 时会读冷文件。