HBase读写数据流程
数据库最常见的操作就是读写数据,接下来,针对HBase读写数据的流程进行详细介绍。
读数据流程
从HBase中读数据的流程其实就是寻址的流程,具体流程如下:
(1) Client通过ZooKeeper、“-ROOT-”表以及“.META.”表来找到目标数据所在的RegionServer地址(即目标数据所在Region的服务器地址);
(2) Client通过请求RegionServer地址来查询目标数据;
(3) RegionServer定位到目标数据所在的Region,然后发出查询目标数据的请求;
(4) Region先在MemStore中查找目标数据,若查找到,则返回;若查找不到,则继续在StoreFile中查找。
写数据流程
即存储数据,从客户端把目标数据存储到服务器上。具体流程如下:
(1) Client根据行键RowKey找到对应的Region所在的RegionServer;
(2) Client向RegionServer发送提交写入数据的请求;
(3) RegionServer找到目标Region;
(4) Region检查数据是否与Schema一致;
(5) 若Client没有指定版本,则获取当前系统的时间作为数据版本;
(6) 将更新的记录写入预写日志HLog和MemStore中;
(7) 判断 MemStore是否已满,若满则进行flush操作,将数据写入StoreFile文件,反之,则直接将数据存入MemStore。