1、HBase读数据流程

hbase单次读写性能 hbase的读写_hadoop

hbase单次读写性能 hbase的读写_hbase单次读写性能_02

hbase单次读写性能 hbase的读写_大数据_03

HBase读操作 

  1. 首先从zk找到meta表的region位置,然后读取meta表中的数据,meta表中存储了用户表的region信息
  2. 根据要查询的namespace、表名和rowkey信息。找到写入数据对应的region信息
  3. 找到这个region对应的regionServer,然后发送请求
  4. 查找对应的region
  5. 先从memstore查找数据,如果没有,再从BlockCache上读取HBase上Regionserver的内存分为两个部分
  1.  一部分作为Memstore,主要用来写;
  2. 另外一部分作为BlockCache,主要用于读数据;
  1. 如果BlockCache中也没有找到,再到StoreFile上进行读取

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

2、HBase写数据流程

hbase单次读写性能 hbase的读写_hbase_04

hbase单次读写性能 hbase的读写_hbase单次读写性能_05

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中的历史数据