💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
[TOC] # 示意图 -ROOT表在zk中查找, 然后.META.表在-ROOT表中查找 然后regionServer在.META表中查找 -ROOT表记录的是.META信息,每个.META记录那些范围的row key 然后.META表表记录那些范围的row key放在那些region server中 ![](https://box.kancloud.cn/a5b8f69d3b245b304eba1deddd26ed68_1886x592.png) # -ROOT和.META.表 ![](https://box.kancloud.cn/cae065e4e392897ac1ef8a8146eaaf78_596x210.png) ![](https://box.kancloud.cn/99bc496365696cc3b1880cf8b8cce061_607x426.png) # 寻址流程 现在假设我们要从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 位置信息。 说明: 1 **root region永远不会被split**,保证了最需要三次跳转,就能定位到任意region 。 2.META.表每行保存一个region的位置信息,row key 采用表名+表的最后一行编码而成。 3 **为了加快访问,.META.表的全部region都保存在内存中** 4 **client会将查询过的位置信息保存缓存起来**,缓存不会主动失效,因此如果client上的缓存全部失效,则需要进行最多6次网络来回,才能定位到正确的region(其中三次用来发现缓存失效,另外三次用来获取位置信息)。 ![](https://box.kancloud.cn/ce3b59bfe1eaab22e21a4d8feaac80b0_655x908.png)