数据存储之HBase数据读写流程

HBase写数据流程

在这里插入图片描述
写数据流程:

  1. client访问zookeeper,获取元数据表位于哪个regionserver
  2. 前往目标regionserver,拿到元数据表并根据rowkey等信息查询出数据应该位于哪个regionserver的哪一个region中,并将这个表的region信息以及meta表的位置信息缓存在客户端的meta cache,以便下次访问
  3. 与目标regionserver通信
  4. 将写入操作顺序写入(追加)到WAL
  5. 将数据写入对应的memstore,数据会在memstore中进行排序
  6. 向客户端发送ack,告知写入成功
  7. 等待到了memstore的刷写时机后,将数据刷写到storeFile中

HBase读数据流程

在这里插入图片描述
读数据流程:

  1. client先访问zookeeper,获取元数据表位于哪个regionserver
  2. 前往目标regionserver,拿到元数据表并根据rowkey等信息查询出数据应该位于哪个regionserver的哪一个region中,并将这个表的region信息以及meta表的位置信息缓存在客户端的meta cache,以便下次访问
  3. 与目标regionserver通信
  4. 按顺序去Block Cache(读缓存)、memstore和HFile中查询目标数据,并且将查到的所有数据进行合并。此处所有数据指的是同一条数据的不同版本(timestamp)或者不同操作类型
  5. 将从文件中查询到的数据块(Block:HFile数据存储单元,默认大小为64kb)缓存到Block cache
  6. 将合并后的结果返回给客户端