HBase读/写数据流程

HBase读数据流程

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

  • 1、客户端首先与zk进行连接;
    • 从zk找到meta表的region位置,即meta表的数据 一HRegionServer上;
    • 客户端与此HRegionServer建立连接,然后读取meta表中的数据;meta表中存储了所有用户表的region信息,我们可以通过scan 'hbase:meta'来查看meta表信息
  • 2、根据要查询的namespace、表名和rowkey信息。找到写入数据对应的region信息
  • 3、找到这个region对应的regionServer,然后发送请求
  • 4、查找并定位到对应的region
  • 5、先从memstore查找数据,如果没有,再从BlockCache上读取
    • HBase上Regionserver的内存分为两个部分
      • 一部分作为Memstore,主要用来写;
      • 另外一部分作为BlockCache,主要用于读数据;
  • 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中进行恢复。
posted @ 2022-05-15 16:34  Tenic  阅读(166)  评论(0编辑  收藏  举报