一、读数据流程
Client首先访问Zookeeper集群,在Zookeeper的meta表找到HMaster所在的服务器,接着Zookeeper把HMaster所在的HRegionServer的信息响应给Client,Client给HMaster发送查找根据命名空间、表名和行键确定的Region所在的HRegionServer的请求,HMaster把行键所在的HRegionServer的信息返回给Client,Client向行键所在的HRegionServer发起读请求,首先从MemStore读数据,如果没有,接着去BlockCache读数据,如果还没有,最后去StoreFile读数据(StoreFile是以HFile的形式存储在HDFS上),如果要从StoreFile里面读数据,不是直接把读的结果返回给Client,而是先写入BlockCache,再返回给Client。
二、写数据流程
Client往Zoopkeeper集群发送寻找HMaster所在的HRegionServer的请求,Zookeeper响应Client,返回HBase的元数据所在的HRegionServer,Client向HMaster发送写请求,HMaster给Client分配Region,Client向分配的Region所在的RegionServer发送写入数据的请求,这里要先写入HRegionServer的HLog,再将数据写入MemStore,这是为了防止内存存储的数据丢失,可以从Write-Ahead logfile日志文件恢复数据,最后HRegionServer响应反馈给Client写入数据成功。