HBase读写数据流程

HBase读写数据流程(通俗易懂)

HBase读数据流程

HBase读数据流程图如下:
HBase读写数据流程
HBase读数据具体流程:

(1)Client先访问zookeeper,从meta表读取region的位置,然后读取meta表中的数据。meta中又存储了用户表的region信息。
(2)根据Rowkey在meta表中找到对应的region信息。
(3)找到这个Region对应的RegionServer。
(4)查找对应的Region。
(5)先从MemStore找数据,如果没有,再到BlockCache里面读。
(6)BlockCache还没有,在到StoreFile上读(为了读取的效率)。
(7)如果是从StoreFile里面读取的数据,不是直接返回给客户端,而是先写入BlockCache,再返回给客户端。

从整体的方面看,如下图:
HBase读写数据流程

HBase写数据流程

HBase写数据流程图如下:
HBase读写数据流程
HBase写数据具体流程:

(1)Client访问ZooKeeper,获取Meta表所处位置(ip)。
(2)访问Meta表,然后读取Meta表中的数据。
(3)根据namespace(类似于关系型数据库中的数据库)、表名和RowKey在Meta表中找到该RowKey应该写入到哪个Region。
(4)找到这个Region对应的RegionServer,并发送写数据请求。
(5)HRegionServer将数据写写到HLog(Write Ahead Log)。为了数据的持久化和恢复。
(6)HRegionServer将数据写到内存(MemStore)。
(7)反馈Client写入成功。

写数据这一块也可以看出,HBase将数据写入到内存中后,就返回给客户端写入成功,响应非常快。这也是为什么HBase写数据速度快的原因。

ps:望多多支持,后续更新中。。。