MST
星途 面试题库

面试题:HBase Compaction基本工作原理中Minor Compaction的流程是怎样的?

请详细阐述HBase中Minor Compaction的具体执行步骤,包括涉及到哪些文件、数据如何处理等。
37.8万 热度难度
数据库Hbase

知识考点

AI 面试

面试题答案

一键面试

Minor Compaction执行步骤

  1. 选择文件
    • HBase会挑选一些较小的HFile(通常是Store下按照文件大小排序后的较小文件)。这些文件通常是在MemStore刷写过程中产生的较小的HFile。
  2. 读取数据
    • 同时读取选中的多个HFile中的数据。HFile中的数据是以KeyValue对的形式存储的,按照RowKey排序。读取时会将这些KeyValue对从磁盘读取到内存中。
  3. 合并数据
    • 在内存中,将从多个HFile读取的KeyValue对按照RowKey进行排序合并。如果遇到相同RowKey的不同KeyValue对,会按照时间戳等规则(通常保留最新时间戳的版本)进行合并。
  4. 写入新HFile
    • 合并后的数据会被写入到一个新的HFile中。新HFile会根据HBase的文件格式进行组织,包括元数据(如文件信息、索引等)和数据部分(KeyValue对)。这个新的HFile会包含合并后的所有数据。
  5. 替换旧文件
    • 当新HFile写入完成后,旧的参与合并的HFile会被标记为删除。在合适的时机(如完成一次Major Compaction或经过一定的清理策略),这些被标记删除的旧HFile会被真正从磁盘上删除,而新的HFile则会替代它们,成为Store中的一部分,参与后续的读写操作。

涉及文件及数据处理

  • 涉及文件
    • 旧HFile:多个较小的HFile,这些是在MemStore刷写过程中生成的,它们是Minor Compaction的输入文件。
    • 新HFile:由合并后的数据生成的新HFile,它是Minor Compaction的输出文件,会替代旧的HFile参与后续的存储和查询操作。
  • 数据处理
    • 排序合并:对从旧HFile读取的KeyValue对按RowKey排序合并,相同RowKey的不同版本数据按时间戳等规则保留合适版本。
    • 版本处理:在合并过程中,根据HBase的版本保留策略(如保留最新版本等)处理数据版本,确保数据的一致性和准确性。