HBase读写流程
一、HBase读数据流程
(1)Client向Zookeeper发送读数据的请求
(2)Zookeeper响应请求,允许Client访问Zookeeper
(3)Zookeeper返回-ROOT-表所在的位置信息给Client
(4)Client根据Zookeeper返回的信息找到对应的HRegionServer以及HRegionServer下对应的-ROOT-表
(5)Client从-ROOT-表中获取.META表的元数据信息
(6)Client根据获取的元数据信息找到.META表
(7)Client发送访问.META表的请求
(8).META表响应请求,允许Client访问.META
(9).META返回Region的云数据信息给Client
(10)Client根据.META返回的信息找到具体的Region
(11)Client访问Region,Region将数据返回给Clietn
(1)Client访问Region时,实际上到Region的store的Memstore里读取数据
(2)Client向Memstore发送读取数据的请求
(3)Memstore响应请求,允许Client访问读取
(4)Client在Memstore中找到需要的数据
(5)Memstore返回数据给Client
(6)如果Memstore中没有Cilent需要的数据,就会到Blockcache中查找
(7)在Blockcache中找到需要的数据,就会直接返回给Client
(8)如果在Blockcache中找不到需要的数据,就会到HDFS中查找HFile的数据
(9)找到数据后,缓存到Blockcache中
(10)最后,通过Blockcache将数据返回到Client
二、HBase写数据流程
(1)Client向Zookeeper发送写数据的请求
(2)Client得到Zookeeper的响应后,获取表的云数据信息
(3)Client通过云数据信息,找到对应的RegionServer、-ROOT-表、.META表和Region
(4)同时,将数据写入的操作记录保存到HLog中
(5)通过操作记录将数据写入到Memstore中
(6)当Memstore达到阀值(16KB)时,溢写到StoreFile中,以HFile的形式保存
(7)最后,HFile分布式存储在HDFS当中