Hbase读写流程:整体读取流程
-
目标
- 掌握Hbase数据读取整体流程
-
分析
#根据rowkey来判断读取哪个region get ns:tbname , rowkey #读取所有Region scan ns:tbname
- step1:获取元数据
- step2:找到对应的Region
- step3:读取数据
-
实现
- step1:获取元数据
- 客户端请求Zookeeper,获取meta表所在的regionserver的地址
- 读取meta表的数据
- 注意:客户端会缓存meta表的数据,只有第一次会连接ZK,读取meta表的数据,缓存会定期失效,要重新缓存
- 避免每次请求都要先连接zk,再读取meta表
- step2:找到对应的Region
- 根据meta表中的元数据,找到表对应的region
- 根据region的范围和写入的Rowkey,判断需要写入具体哪一个Region
- 根据region的Regionserver的地址,请求对应的RegionServer
- step3:读取数据
- 先查询memstore
- 如果没有,就读取StoreFile
- 如果查询的列族开启了缓存机制
- 第一次
- 先查询MEMStore
- 没有就查询StoreFile
- 查询到以后,将查询结果放入读缓存BlockCache
- 第二次
- 先查询MEMStore
- 再查询BlockCache
- 最后查询StoreFile
- 第一次
- step1:获取元数据
-
总结
- RegionServer
- Region
- Store
- Memstore
- BlockCache
- StoreFIle
- Memstore
- Store