下面整理了下,楼主有不同的想法,可多交流:
下面是从代码角度:
scan调用,先是StoreScanner-》StoreFileScanner-》HFileScanner
在HBase中,一张表可以有多个Column Family,在一次Scan的流程中,每个Column Family的数据读取由一个StoreScanner对象负责。每个Store【Column Family】的数据由一个内存中的MemStore和磁盘上的HFile文件组成,相对应的,StoreScanner对象雇佣一个MemStoreScanner和N个StoreFileScanner来进行实际的数据读取。
其实上面是根据HBase的表数据来分的
HRegion->HStore->[HFile,HFile,...,MemStore]
##################################
从原理角度
首先会扫描region,扫完一个,在扫另一个。
单独扫region的流程,这里借用一张图
整个过程:
|