1、写流程图解
-
Client先访问zookeeper,获取hbase:meta表位于哪个Region Server。
-
访问对应的Region Server,获取hbase:meta表,根据读请求的namespace:table/rowkey,查询出目标数据位于哪个Region Server中的哪个Region中。并将该table的region信息以及meta表的位置信息缓存在客户端的meta cache,方便下次访问。
-
与目标Region Server进行通讯;
-
将数据顺序写入(追加)到WAL;
-
将数据写入对应的MemStore,数据会在MemStore进行排序;
-
向客户端发送ack;
-
等达到MemStore的刷写时机后,将数据刷写到HFile。
2、读流程图解
-
Client先访问zookeeper,获取hbase:meta表位于哪个Region Server。
-
访问对应的Region Server,获取hbase:meta表,根据读请求的namespace:table/rowkey,查询出目标数据位于哪个Region Server中的哪个Region中。并将该table的region信息以及meta表的位置信息缓存在客户端的meta cache,方便下次访问。
-
与目标Region Server进行通讯;
-
分别在Block Cache(读缓存),MemStore和Store File(HFile)中查询目标数据,并将查到的所有数据进行合并。
-
将查询到的数据块(Block,HFile数据存储单元,默认大小为64KB)缓存到Block Cache。
-
将合并后的最终结果返回给客户端。