查看: 162|回复: 0

HBASE的寻址过程

[复制链接]
新浪微博达人勋 poiu72  未实名认证
论坛徽章:
23
SAS研习者初级
日期:2012-08-20 22:27:43HBase徽章
日期:2017-03-10 12:01:24Java徽章
日期:2017-06-09 15:42:21storm徽章
日期:2017-07-20 17:23:53python徽章
日期:2017-09-07 16:20:32Java徽章
日期:2018-02-08 16:11:57知识图谱徽章
日期:2018-06-15 13:47:35pyspark徽章
日期:2018-09-06 14:49:50计算徽章
日期:2019-05-09 14:32:23spark徽章
日期:2019-08-01 16:31:52Hive徽章
日期:2017-03-10 11:59:23python徽章
日期:2017-03-02 16:33:17
发表于 2019-6-9 21:11 | 显示全部楼层 |阅读模式

网络 管理


现在假设我们要从Table2里面插寻一条RowKey是RK10000的数据。那么我们应该遵循以下步骤:
1. 从.META.表里面查询哪个Region包含这条数据。
2. 获取管理这个Region的RegionServer地址。
3. 连接这个RegionServer, 查到这条数据。

系统如何找到某个row key (或者某个 row key range)所在的region
bigtable使用三层类似B+树的结构来保存region位置。
第一层是保存zookeeper里面的文件,它持有root region的位置。
第二层root region是.META.表的第一个region其中保存了.META.表其它region的位置。通过root region,我们就可以访问.META.表的数据。
.META.是第三层,它是一个特殊的表,保存了HBase中所有数据表的region 位置信息。
说明:
1root region永远不会被split,保证了最多需要三次跳转,就能定位到任意region 。
2.META.表每行保存一个region的位置信息,row key 采用表名+表的最后一行编码而成。
3 为了加快访问,.META.表的全部region都保存在内存中。
4 client会将查询过的位置信息保存缓存起来,缓存不会主动失效,因此如果client上的缓存全部失效,则需要进行最多6次网络来回,才能定位到正确的region(其中三次用来发现缓存失效,另外三次用来获取位置信息)。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

 

GMT+8, 2019-9-20 15:43 , Processed in 0.143351 second(s), 29 queries .

关闭

扫一扫加入
本版微信群