面试题答案
一键面试HFile过滤淘汰基本原理
HBase 中的 HFile 过滤淘汰主要基于数据访问模式和数据重要性。随着数据不断写入,HBase 会对 HFile 进行合并操作,在这个过程中,一些“冷数据”(访问频率低的数据)可能会被淘汰。其原理基于以下几点:
- 数据访问热度:系统会跟踪数据的访问频率,访问频率低的数据更有可能被淘汰。
- 空间占用:当存储空间紧张时,会优先淘汰占用空间大但访问价值低的数据。
涉及组件
- MemStore:数据首先写入 MemStore,当 MemStore 达到一定阈值,会刷写到 HFile 中。
- StoreFile:即 HFile,是 HBase 数据存储的实际文件。
- RegionServer:负责管理多个 Region,协调 HFile 的创建、合并和淘汰等操作。
涉及流程
- 写入流程:客户端将数据写入 MemStore,当 MemStore 大小达到
hbase.hregion.memstore.flush.size
阈值时,触发刷写操作,数据被写入 HFile 中。 - 合并流程:随着 HFile 数量增多,会触发 Minor Compaction 和 Major Compaction。Minor Compaction 合并部分 HFile,Major Compaction 合并所有 HFile。在合并过程中,会根据过滤淘汰规则对数据进行筛选。
- 淘汰流程:在合并时,根据数据访问热度、空间占用等因素,确定哪些数据将不会被合并到新的 HFile 中,这些数据对应的 HFile 或数据块会被标记为可淘汰,后续系统会回收相关资源。