Segment是Hbase2.0的概念,MemStore由一个可写的Segment,以及一个或多个不可写的Segments构成。故hbase 1.*版本中的MemstoreScanner变成了SegmentScanner。算法
对应关系表sql
Hbase存储结构 | Hbase Scanner体系 |
---|---|
Region | RegionScanner |
Store | StoreScanner |
Memstore | SegmentScanner(memstore级别) |
Storefile | StorefileScanner |
hbase scanner体系与hbase存储组织结构是一一对应的。nosql
数据真正的读取过程只发生在StorefileScanner,其余scanner只是帮助缩小查找范围,相似于多级索引体系。blog
storefilescanner的读取抽象过程如图所示:
索引
要想知道读取细节,首先须要了解HFile的结构:get
数据根据索引Root Index Block、Leaf Index Block,定位DataBlock。在64k大小的DataBlock中,能够根据二分查找等算法,定位到数据。it