【学习历程】18 HBase读写数据流程

一、HBase读数据流程

请添加图片描述

说明:HBase集群,只有一张meta表,此表只有一个region,该region数据保存在一个HRegionServer上

1.1 客户端首先与zk进行连接

  • 从zk找到meta表的region位置,即meta表的数据存储在某一HRegionServer上
  • 客户端与此HRegionServer建立连接,然后读取meta表中的数据;meta表中存储了所有用户表的region信息,我们可以通过scan 'hbase:meta'来查看meta表信息

1.2 根据要查询的namespace、表名和rowkey信息。找到写入数据对应的region信息

1.3 找到这个region对应的regionServer,然后发送请求

1.4 查找并定位到对应的region

1.5 先从memstore查找数据,如果没有,再从BlockCache上读取

  • HBase上Regionserver的内存分为两个部分
  • 一部分作为Memstore,主要用来写
  • 另外一部分作为BlockCache,主要用于读数据

1.6 如果BlockCache中也没有找到,再到StoreFile上进行读取

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

二、HBase写数据流程

请添加图片描述

  1. 客户端首先从zk找到meta表的region位置,然后读取meta表中的数据,meta表中存储了用户表的region信息
  2. 根据namespace、表名和rowkey信息。找到写入数据对应的region信息
  3. 找到这个region对应的regionServer,然后发送请求
  4. 把数据分别写到HLog(write ahead log)和memstore各一份
  5. memstore达到阈值后把数据刷到磁盘,生成storeFile文件
  6. 删除HLog中的历史数据

补充:
HLog(write ahead log):
也称为WAL意为Write ahead log,类似mysql中的binlog,用来做灾难恢复时用,HLog记录数据的所有变更,一旦数据修改,就可以从log中进行恢复。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值