MST
星途 面试题库

面试题:HBase Compaction高级策略中的Minor Compaction与Major Compaction的区别及应用场景

请阐述HBase Compaction高级策略中Minor Compaction和Major Compaction的主要区别,并且说明在什么样的业务场景下会优先选择Minor Compaction,什么样的场景下需要使用Major Compaction。
45.6万 热度难度
数据库Hbase

知识考点

AI 面试

面试题答案

一键面试

Minor Compaction和Major Compaction主要区别

  1. 合并文件数量
    • Minor Compaction:通常只合并少量(一般是较小数量,例如3 - 5个)HFile文件。它选择部分小的、相邻的HFile进行合并。
    • Major Compaction:会合并Region下的所有HFile文件。
  2. 数据处理
    • Minor Compaction:不会处理墓碑(tombstone)数据。墓碑数据是标记删除的数据,Minor Compaction时这些数据依然保留在文件中。
    • Major Compaction:会清理墓碑数据,将真正删除的数据从文件中移除。
  3. 执行频率和性能影响
    • Minor Compaction:执行频率相对较高。由于只合并少量文件,对系统性能影响相对较小,一般不会对读写操作造成长时间阻塞。
    • Major Compaction:执行频率低。因为要合并所有文件,涉及大量的I/O操作,对系统性能影响较大,可能会对读写操作造成明显的阻塞。

优先选择Minor Compaction的业务场景

  1. 日常读写频繁场景:在日常业务中,系统对读写性能要求较高,频繁的Major Compaction会严重影响读写操作。Minor Compaction可以在不显著影响性能的情况下,对小文件进行合并优化,提升查询效率。例如实时数据分析系统,需要随时查询最新数据,Minor Compaction可以在后台持续优化文件结构,而不影响正常的数据分析查询。
  2. 数据更新不涉及大量删除操作场景:如果业务中数据更新以插入和修改为主,删除操作较少,那么墓碑数据产生量也少。这种情况下,Minor Compaction足以维持HBase存储的基本优化,无需频繁进行Major Compaction来清理墓碑数据。比如一个简单的日志记录系统,主要是不断追加新的日志记录,很少删除旧记录。

需要使用Major Compaction的场景

  1. 数据删除量大场景:当业务中存在大量数据删除操作后,墓碑数据积累较多,此时需要Major Compaction来清理这些墓碑数据,释放磁盘空间,并真正从文件系统中移除已删除的数据。例如在用户注销频繁的系统中,用户注销会产生大量删除数据的操作,定期执行Major Compaction可以优化存储。
  2. 数据一致性要求高场景:在一些对数据一致性要求极高的场景下,Minor Compaction因为不处理墓碑数据,可能会导致查询到已删除的数据(因为墓碑数据还存在于文件中)。Major Compaction清理墓碑数据,可以确保数据的一致性。比如金融交易系统,对于交易记录的删除必须保证彻底,以确保数据准确和合规。