图文详解 HBase 的读写流程

本文详细解读HBase的内部工作机制,包括读取操作如何通过ZooKeeper定位meta表,找到数据所在的Region和RegionServer,以及MemStore和BlockCache的使用策略。写操作同样涉及ZooKeeper定位,数据的HLog和MemStore同步,以及StoreFile的生成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和参考文献请见1000个问题搞定大数据技术体系

正文

请结合我的这篇博客来理解本文:
一篇文章搞懂 HBase 的内部原理

读操作

在这里插入图片描述

  1. 首先从 ZooKeeper 找到 meta 表的 region 位置,然后读取 hbase:meta 表中的数据, hbase:meta 表中存储了用户表的 region 信息
  2. 根据要查询的 namespace 、表名和 rowkey 信息,找到写入数据对应的 Region 信息
  3. 找到这个 Region 对应的 RegionServer ,然后发送请求
  4. 查找对应的 Region
  5. 先从 MemStore 查找数据,如果没有,再从 BlockCache 上读取

HBase 上 RegionServer 的内存分为两个部分一部分作为 MemStore ,主要用来写;。
另外一部分作为 BlockCache ,主要用于读数据;

  1. 如果 BlockCache 中也没有找到,再到 StoreFile(HFile) 上进行读取

从 StoreFile 中读取到数据之后,不是直接把结果数据返回给客户端,而是把数据先写入到 BlockCache 中,目的是为了加快后续的查询;然后在返回结果给客户端。

写操作

在这里插入图片描述

  1. 首先从 ZooKeeper 找到 hbase:meta 表的 Region 位置,然后读取 hbase:meta 表中的数据, hbase:meta 表中存储了用户表的 Region 信息
  2. 根据 namespace 、表名和 rowkey 信息找到写入数据对应的 Region 信息
  3. 找到这个 Region 对应的 RegionServer ,然后发送请求
  4. 把数据分别写到 HLog ( WriteAheadLog )和 MemStore 各一份
  5. MemStore 达到阈值后把数据刷到磁盘,生成 StoreFile 文件
  6. 删除 HLog 中的历史数据。
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值