大数据全系列 教程
1869个小节阅读:468.1k
目录
408考研
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
Client访问Zookeeper,查找hbase:meta表位置,看它在哪个RegionserverR上。
xxxxxxxxxx
[zk: localhost:2181(CONNECTED) 5] get -s /hbase/meta-region-server
?master:16000?lG??IPBUF
node2?}????/
cZxid = 0x32000000ba
ctime = Thu Dec 02 10:36:02 CST 2021
mZxid = 0x3400000040
mtime = Mon Dec 06 10:57:56 CST 2021
pZxid = 0x32000000ba
cversion = 0
dataVersion = 7
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 52
numChildren = 0
Client访问regionserverR上hbase:meta表中的数据,查找要操作rowkey的所在表对应region所在的regionserverX,将读取到的meta数据缓存到Client的Meta Cache中。
Client读取regionserverX上的对应的region数据
定位到真正的数据所在的region的时候,按照下述步骤进行操作:
查找blockcache;如果blockcache有完整的数据则直接返回;如果没有或者有部分数据则,再去读取MemStore,查找storefile的数据,同时将数据缓存与blockcache中。
先去blockcache(读缓存)查找,如果找到则返回,反之下一步
再去memstore中查找,找到则返回,如果找不到则继续下一步。
读取对应的storefile,查找,找到后,缓存到blockcache中,并返回给client。没有找到数据。
client获取不到数据;获取到数据后也可以在本地缓存起来,以便于下次直接从缓冲区中读取该数据。
总结:HBase客户端查找关注的行范围所在的regionserver。它通过查询hbase:meta表来完成此操作。在找到所需的region(psn-region2)之后,客户端联系提供该region的RegionServer,而不是通过Master,并发出读取请求。此信息缓存在客户端中,以便后续请求无需经过查找过程。如果Master的负载均衡器重新平衡或者由于regionserver宕机,都会重新指定该region的regionserver。客户端将重新查询目录表以确定用户region的新位置。