MST

星途 面试题库

面试题:Hbase中Region写入流程的主要步骤有哪些

请详细阐述Hbase Region写入流程从客户端发起写请求开始,到数据最终持久化存储这一过程中的主要步骤。
44.9万 热度难度
数据库Hbase

知识考点

AI 面试

面试题答案

一键面试
  1. 客户端请求
    • 客户端通过 HBase API 构建 Put 请求,包含要写入的表名、行键、列族、列限定符和值等信息。
    • 客户端使用 HConnection 来定位目标 Region 所在的 RegionServer。这一过程涉及到访问 ZooKeeper 获取 -ROOT- 表位置,进而定位.META. 表,最终找到目标 Region 所在的 RegionServer 地址。
  2. RegionServer 接收请求
    • RegionServer 接收客户端发送的写请求。
    • 首先将请求写入到预写式日志(WAL,Write - Ahead Log)。WAL 用于确保数据在发生故障时能够恢复,它按照顺序记录所有的写操作。每个 RegionServer 有一个共享的 WAL 日志文件。
  3. MemStore 写入
    • 写操作成功写入 WAL 后,数据会被写入到对应的 Region 的 MemStore 中。MemStore 是一个内存中的数据结构,按照行键排序存储写入的数据。
    • 当 MemStore 达到一定的阈值(默认是 128MB)时,会触发 MemStore 的 Flush 操作。
  4. MemStore Flush
    • MemStore 中的数据被刷写到 HDFS 上,形成 HFile。HFile 是 HBase 在 HDFS 上存储数据的文件格式,它是一种列式存储格式,以键值对的形式存储数据。
    • Flush 操作会创建一个新的 HFile,并将 MemStore 中的数据写入该文件。写入完成后,MemStore 被清空,等待接收新的写请求。
  5. 数据持久化存储
    • HFile 被存储在 HDFS 上,具体路径为 /hbase/data/{tableName}/{regionName}/{storeName}/{version}/ 目录下。
    • 多个 HFile 可能会随着时间不断生成,RegionServer 会定期执行 Compaction 操作。Minor Compaction 会合并较小的 HFile,Major Compaction 会合并一个 Store 下的所有 HFile,消除过期数据和 tombstone(标记删除的数据),最终实现数据在 HDFS 上的持久化存储。