四个步骤
Client-Server读取交互逻辑、
Server端Scan框架体系、
过滤淘汰不符合查询条件的HFile、
从HFile中读取待查找Key
1、Client-Server读取交互逻辑
客户端和服务器的交互,
Client首先会从Zookeeper中获取元数据hbase:meta表所在的RegionServer,
然后根据待读写rowkey发送请求到元数据所在RegionServer,
最后将请求进行封装发送到目标RegionServer进行处理。
2、Server端Scan框架体系
一次scan可能会同时扫描一张表的多个region,对于这种扫描,客户端会根据hbase:meta 元数据将扫描的起始区间[startKey, stopKey) 进行切分,切分为多个互相独立的查询子区间,每个子区间对应一个Region。
HBase中每个Region都是一个独立的存储引擎,因此客户端可以将每个子区间请求分别发送给对应的Region进行处理。单个Region处理scan请求的核心请求主要做了两件事情:(1)构建scanner itratior体系;(2)执行next函数获取keyvalue,并对其进行条件过滤。
1)构建scanner itratior体系
① 构建三层Scanner体系;
② 过滤淘汰部分不满足查询条件的Scanner;常见的过滤策略:Time Range、Rowkey Ra