HBase的读写流程在0.96版本前后是不同的,在0.96版本之前如下图所示:
流程:客户端访问Zookeeper寻找并返回-ROOT-文件的位置,然后在请求读写返回来的-ROOT-文件,读取成功返回.meta文件的位置,然后请求读取.meta文件,返回要操作的HRegionServer的位置,最后访问HRegionServer进行具体的操作。
在0.96版本以后如下图所示
流程:客户端访问Zookeeper寻找并返回.meta文件的位置,然后请求读取.meta文件,返回要操作的HRegionServer的位置,最后访问HRegionServer进行具体的操作。
相对于HBase0.96之前有如下改动:
a.减少了访问-ROOT-文件的步骤
b.客户端在第一次访问zookeeper之后,自动缓存.meta文件的位置
c.每一个HRegion都把持了起始行键和结束行健,每一个HRegionServer也记录了HRegion的起始和结束行键,客户端也会自动缓存访问过的HRegion所在的HRegionServer,如果发生了HRegion的转移或者客户端宕机,那么建立的缓存是无效的