《Hbase权威指南》深入学习hbase架构(9):rowkey查询的“奇幻漂流”

本文详细介绍了HBase中客户端如何查询特定rowkey的信息,包括利用缓存、Zookeeper及.ROOT.和.META.表来定位rowkey所在的具体HRegionServer,以及最终在HRegionServer上的查询流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在[u][b]《分区查找》[/b][/u]这一章中我们已经学习了Region Lookups的详细内容;那么,对于一个给定的rowkey,客户端是如何去查询这个rowkey的信息的——可能有匹配信息也可能没有,是每次都去做如《分区查找》这边文章中说的那样,每次都去做三次查询吗?如果答案为否,那么客户端是如今和处理的?
实际上,hbase的查询流程是这样的:
[img]http://dl.iteye.com/upload/attachment/0083/1376/324a997c-f274-33dc-bd06-974fe283ba0a.jpg[/img]
1、客户端会首先查询客户端缓存,如果其中缓存有的-ROOT-和.META.的信息,则可以由这些缓存定位到保存有给点rowkey区间的HRegion Server的地址,然后直接执行第4步,否则直接执行第2步;
2、客户端到Zookeeper中获取-ROOT-表的地址;
3、客户端从-ROOT-表中获取请求的rowkey所属的.META.region的位置;
4、客户端从.META.表中查找到rowkey所在的region的HRegion Server位置;
5、客户端最后直接连接rowkey所在的region的HRegion服务器,如果服务器上没有rowkey所属的region,这就说明缓存的数据有误(因为region做了分割,并且修改修改过.META.表),这种情况下会再次从第2-4步的过程,并将最新的数据信息缓存到客户端;否则执行第6步;
6、客户端会先到内存中的memstore查询给定的rowkey,如果查到则直接将结果返回给客户端;
7、如果在memstore中没有查到rowkey匹配的数据,那么接着读取服务器磁盘上storefile文件,在storefile中匹配该rowkey并将结果——可能查得到或查不到——返回给客户端。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值