MST
星途 面试题库

面试题:Hbase中HBase Compaction分布式管理下的触发机制是什么

在HBase Compaction的分布式管理场景下,请详细阐述其常见的触发机制有哪些,包括手动触发和自动触发的相关条件及原理。
20.3万 热度难度
数据库Hbase

知识考点

AI 面试

面试题答案

一键面试

手动触发

通过HBase Shell命令 major_compact 实现。对指定表执行该命令后,HBase会立即启动对该表所有Region的Major Compaction。其原理是强制将一个Region中的所有StoreFile合并成一个大的StoreFile,此过程会删除过期数据和标记为删除的数据,从而优化数据存储结构,提升查询性能。

自动触发

  1. Minor Compaction
    • 触发条件:当一个Store中的StoreFile数量达到 hbase.hstore.compactionThreshold(默认值为3)时,会触发Minor Compaction。另外,当某个StoreFile的大小小于 hbase.hstore.compaction.min.size(默认值为134217728,即128MB),且Store中StoreFile数量大于等于 hbase.hstore.compaction.min(默认值为2)时,也可能触发。
    • 原理:Minor Compaction会挑选Store中较小的一些StoreFile进行合并,生成一个新的StoreFile。此过程不会删除过期数据和标记为删除的数据,主要目的是减少StoreFile的数量,提升读性能,因为读操作时需要遍历的文件数减少。
  2. Major Compaction
    • 触发条件
      • 时间周期触发:默认情况下,每个Region的Major Compaction每7天(可通过 hbase.regionserver.optionalcacheflushinterval 配置,单位为毫秒)执行一次。
      • 当StoreFile的数量达到 hbase.hstore.majorcompaction.threshold(默认值为Integer.MAX_VALUE,即几乎不限制,实际很少依赖此值触发)。
    • 原理:Major Compaction会将一个Region中的所有StoreFile合并成一个大的StoreFile,同时清理过期数据和标记为删除的数据,重新构建Bloom Filter等索引结构,从而优化存储和提升查询效率。