HBase读流程

Meta Cache是客户端缓存元数据的
Block Cache是读缓存,缓存实际数据
1)Clinet先访问Zookeeper,获取hbase:meta表位于哪个RegionServer
2)访问对应的RegionServer,获取hbase:meta表,根据读请求的namespace:table/rowkey,查询出目标数据位于哪个RegionServer中的哪个Region中。并将该table的Region信息以及meta表的位置信息缓存在客户端的Meta Cache,方便下次访问
3)与目标Region Server进行通讯
4)分别在Block Cache,MetaStore和StoreFile(HFile)中查询目标数据,并将查询到的所有数据进行合并。此处所有数据是指同一条数据的不同版本(time stamp)或不同的类型(Put/Delete)
5)将从文件中查询到的数据库(Block,HFile数据存储单元,默认大小为64KB)缓存到Block Cache
6)将合并后的最终结果返回给客户端

读数据先定位,从Zookeeper找meta表所在的Region,再读取meta表,元数据信息写入缓存,向hadoop103发起请求,读取MemStore和StoreFile,把StoreFile磁盘的数据放到Block Cache,MemStore内存的数据放到wal,wal的数据和Block Cache的数据做merge合并,比较时间戳,给客户端返回时间戳最大的。【并不是先读内存再读磁盘】,HBase是读比写慢的框架,读无论如何都要走磁盘。

你可能感兴趣的:(HBase读流程)