写流程

  1. 客户端先通过ZooKeeper的/hbase/meta-region-server节点查询到哪台RegionServer上有hbase:meta表

  2. 客户端连接含有hbase:meta表的RegionServer。 hbase:meta表存储了所有Region的行键范围信息, 通过这个表就可以查询出你要存取的rowkey属于哪个Region的范围里面, 以及这个Region又是属于哪RegionServer。

  3. 获取这些信息后, 客户端就可以直连其中一台拥有你要存取的rowkey的RegionServer

  4. RegionServer收到写请求后会先写入WAL预写日志中,接着就会根据列簇将数据写入region的不同store的memory store中

  5. 最后memeory store会触发 将数据刷成hfile

  6. 客户端会把meta信息缓存起来,下次操作就不需要进行以上加载hbase:meta的步骤了,避免hbase:meta Region的热点问题

image.png

读流程

  1. 客户端先通过ZooKeeper的/hbase/meta-region-server节点查询到哪台RegionServer上有hbase:meta表

  2. 客户端连接含有hbase:meta表的RegionServer。 hbase:meta表存储了所有Region的行键范围信息, 通过这个表就可以查询出你要存取的rowkey属于哪个Region的范围里面, 以及这个Region又是属于哪RegionServer。

  3. 获取这些信息后, 客户端就可以直连其中一台拥有你要存取的rowkey的RegionServer

  4. 客户端读的时候先去BlockCache中读取数据,如果没有在去Memory Store和HFile中读取数据