HBase scan过程简析
1.核心组件及流程 scan过程总体上是分层处理的,与存储上的组织方式一致,脉络比较清晰; 具体来说,就是region→store→hfile/memstore,分别都有对应的scanner实现进行数据读取; scan请求本身设置的条件,以及server和table层面的一些参数限制,会根据需要分布在不同层次的scanner中进行处理; 2.RegionScanner RegionScanner的实现类在HRegion内部定义,为RegionScannerImpl; 该类内部主要通过一个优先级队列(heap)和一个scanner类型的指针(current)进行驱动,不断的从StoreScanner中获取数据; 下面分步说明一下数据驱动的过程: (图1) (图2) (图3) (图4) 假设startrow和stoprow分别为r1和r3。 1:创建指定的各个列族对应的storeScanner,如果未指定则是全部列族; 2:storeScanner创建过程中,会根据startrow参数,seek到对应cell; 3:将这些storeScanner放入一个heap中,heap为优先级队列,比...