面试题答案
一键面试HBase Compaction基本工作原理
HBase中的Compaction是将多个HFile合并成一个HFile的过程。在HBase中,数据首先写入MemStore,当MemStore达到一定阈值后会Flush成一个HFile存储在磁盘上。随着数据不断写入,会产生越来越多的小HFile,这就需要Compaction操作来优化存储。
Minor Compaction和Major Compaction的区别
- Minor Compaction
- 合并文件数量:Minor Compaction通常只合并少量(默认是3个)较小的、相邻的HFile。
- 执行频率:执行频率相对较高,因为它处理的数据量较小,对系统性能影响相对较小。
- 是否删除过期数据:Minor Compaction不会删除过期数据或墓碑标记(tombstone)。墓碑标记是用于标记已删除数据的特殊标记。
- Major Compaction
- 合并文件数量:Major Compaction会合并一个Region下的所有HFile,将它们合并成一个大的HFile。
- 执行频率:执行频率较低,因为它涉及的数据量巨大,对系统性能影响较大。一般建议在业务低峰期执行。
- 是否删除过期数据:Major Compaction会删除过期数据和墓碑标记,真正释放被删除数据占用的空间。
它们在HBase数据存储和管理中的作用
- Minor Compaction的作用
- 减少HFile数量:减少磁盘上HFile的数量,降低文件系统的管理开销,同时也减少读取数据时需要遍历的文件数量,提高读取性能。
- 优化存储布局:将相邻的小HFile合并,使得数据在物理存储上更加连续,有利于后续的读取操作。
- Major Compaction的作用
- 空间回收:彻底删除过期数据和墓碑标记,回收被删除数据占用的磁盘空间,避免磁盘空间的浪费。
- 数据一致性:通过合并所有HFile,确保数据的一致性,因为在合并过程中会处理不同版本的数据,最终只保留最新版本的数据。
- 提升查询性能:合并成一个大的HFile后,查询时只需读取一个文件,大大减少了I/O开销,提升了查询性能。