MST
星途 面试题库

面试题:Hbase行式存储下数据更新的基本流程是什么

在Hbase行式存储结构中,请阐述数据更新操作从客户端发起,到最终在存储层面完成更新的基本流程,包括涉及到的主要组件及交互过程。
43.8万 热度难度
数据库Hbase

知识考点

AI 面试

面试题答案

一键面试
  1. 客户端发起更新请求
    • 客户端通过HBase API构建PutDelete操作对象,包含要更新的行键、列族、列限定符及新数据(对于Put)等信息。
    • 客户端使用HConnection实例与HBase集群建立连接。
  2. Region定位
    • 客户端首先访问Zookeeper,获取-ROOT-表的位置。-ROOT-表记录了meta表的Region位置信息。
    • 客户端再从meta表(.META.)中查询要更新数据所在的Region位置。meta表存储了所有用户表的Region与RegionServer的映射关系。
  3. 与RegionServer交互
    • 客户端将更新请求发送到对应的RegionServer。
    • RegionServer接收到请求后,首先将更新操作写入预写式日志(WAL,Write - Ahead Log)。WAL用于保证数据的可靠性,即使RegionServer故障,也能通过重放日志恢复数据。
    • 然后,更新操作被写入MemStore。MemStore是内存中的数据结构,按行键排序存储数据更新。当MemStore达到一定阈值(例如128MB,可配置)时,会触发Flush操作,将数据写入磁盘的StoreFile。
  4. 存储层面完成更新
    • Flush操作会将MemStore中的数据以HFile(StoreFile)的形式写入HDFS。HFile是HBase在HDFS上存储数据的格式,按照行键有序存储。
    • 随着时间推移和数据更新,HDFS上会有多个HFile。Compaction操作会定期合并这些HFile,删除已标记删除的数据(对于Delete操作),并优化数据存储布局,最终完成数据在存储层面的更新。

主要涉及组件及交互过程总结:

组件作用及交互
客户端构建更新请求,通过Zookeeper定位RegionServer,并发送请求
Zookeeper提供-ROOT-表位置信息,协助客户端定位Region
-ROOT-存储meta表Region位置
meta存储用户表Region与RegionServer映射关系
RegionServer接收更新请求,写入WAL和MemStore,触发Flush和Compaction操作
WAL记录更新操作,保证数据可靠性
MemStore内存中临时存储更新数据
HDFS持久化存储数据,以HFile形式存储