MST

星途 面试题库

面试题:HBase体系结构中数据存储层次关系及读写流程分析

详细说明HBase体系结构中从MemStore到StoreFile,再到HFile的数据存储层次关系。并描述一次完整的读请求和写请求在这个体系结构中的详细流程。
16.3万 热度难度
数据库Hbase

知识考点

AI 面试

面试题答案

一键面试

HBase数据存储层次关系

  1. MemStore
    • 定义:MemStore是HBase中数据写入的第一站,是一个内存中的数据结构,属于Region级别。当客户端向HBase写入数据时,数据首先被写入到MemStore。
    • 数据格式:以KeyValue对的形式存储,按照RowKey排序。
  2. StoreFile
    • 定义:当MemStore达到一定阈值(默认128MB)时,会发生Flush操作,将MemStore中的数据写入到磁盘上,形成一个StoreFile。每个Store对应一个Column Family,一个Store可能有多个StoreFile。
    • 数据格式:StoreFile底层是HFile,它采用了LSM - Tree(Log - Structured Merge - Tree)结构,数据以KeyValue对形式存储,按照RowKey排序。
  3. HFile
    • 定义:HFile是StoreFile的底层实现,是HBase在HDFS上存储数据的实际文件格式。它由多个数据块(Data Block)、索引块(Meta Block)、文件尾(Trailer)等部分组成。
    • 数据格式:数据块中存储KeyValue对,索引块用于加速数据查找,文件尾记录了文件的元数据信息,如数据块的位置等。

写请求流程

  1. 客户端:客户端向HBase写入数据,数据首先到达Region Server的MemStore。
  2. WAL(Write - Ahead Log):在数据写入MemStore之前,会先写入WAL,这是为了保证数据的持久性。WAL采用追加写的方式,记录所有对数据的修改操作。
  3. MemStore:数据写入MemStore后,处于内存中等待进一步处理。当MemStore达到阈值,触发Flush操作,将MemStore中的数据写入到磁盘,生成一个新的StoreFile(HFile)。
  4. HDFS:StoreFile(HFile)最终存储在HDFS上,HBase通过HDFS提供的文件系统接口进行数据的持久化存储。

读请求流程

  1. 客户端:客户端发起读请求,请求到达Region Server。
  2. MemStore:Region Server首先在MemStore中查找数据,如果找到则直接返回数据。
  3. BlockCache:如果MemStore中没有找到数据,会到BlockCache(读缓存)中查找。BlockCache缓存了从HFile中读取的数据块,如果命中则返回数据。
  4. StoreFile(HFile):如果BlockCache中也没有找到数据,Region Server会从StoreFile(HFile)中读取数据。HFile按照RowKey排序,通过二分查找等方式定位数据所在的数据块,读取并返回数据。读取的数据块可能会被放入BlockCache,以便后续读操作使用。