MST
星途 面试题库

面试题:HBase Compaction中等难度面试题

在HBase中,简述Minor Compaction和Major Compaction的主要区别是什么,以及它们各自在什么场景下触发?
22.2万 热度难度
数据库Hbase

知识考点

AI 面试

面试题答案

一键面试

区别

  1. 合并范围
    • Minor Compaction:只合并部分较小的HFile,通常是选取一些较新且较小的HFile进行合并,不会对所有HFile进行操作。
    • Major Compaction:会合并一个Region下的所有HFile,将它们合并成一个大的HFile。
  2. 数据处理
    • Minor Compaction:不删除已标记为删除的数据(墓碑数据),只是简单地将多个HFile合并为一个。
    • Major Compaction:会清理已标记为删除的数据(墓碑数据),同时还会处理版本数据,只保留指定版本的数据。
  3. 性能影响
    • Minor Compaction:对系统性能影响相对较小,因为它只涉及部分HFile的合并,I/O操作量相对少。
    • Major Compaction:对系统性能影响较大,由于要合并所有HFile,I/O操作量大,可能会导致HBase在这个过程中响应变慢。

触发场景

  1. Minor Compaction触发场景
    • 达到文件数量阈值:当一个Store中的HFile数量达到一定阈值时(该阈值可以通过配置参数hbase.hstore.compactionThreshold设置,默认值为3),会触发Minor Compaction。
    • 时间间隔触发:可以配置按一定时间间隔触发Minor Compaction,通过参数hbase.hstore.compaction.minInterval(默认值1分钟)和hbase.hstore.compaction.maxInterval(默认值24小时)来控制。
  2. Major Compaction触发场景
    • 手动触发:管理员可以通过HBase shell命令 major_compact 手动对指定的表或Region进行Major Compaction。例如,major_compact 'tableName' 可以对指定表进行Major Compaction。
    • 自动触发:可以通过配置参数hbase.hregion.majorcompaction来设置自动触发Major Compaction的时间间隔,默认值是7天(单位为毫秒)。当一个Region的上次Major Compaction时间距离当前时间超过这个间隔时,就会自动触发Major Compaction 。另外,如果表的MAJOR_COMPACTION属性设置为0,则表示禁用自动Major Compaction 。