当前位置 博文首页 > Shockang的博客:图文详解 HBase 的读写流程

    Shockang的博客:图文详解 HBase 的读写流程

    作者:[db:作者] 时间:2021-08-13 09:44

    前言

    本文隶属于专栏《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 中的历史数据。
    cs
    下一篇:没有了