0.96以下版本的三层架构
meta表的rowKey由表名、起始key、时间戳组成,如果起始key为空,则表示第一个region,按照起始key排序使得行键不需要终止key就能表示范围。 值则是终止Key、列族、列值,该RegionServer的地址等等。
meta表由于数据量过大可能被分割由多个RS存储,因此又设置了root表存放meta表中所有的region,以及该region所属的meta表的位置。
因此三层架构需要三次跳转才能获取到HRegion,如果缓存失效则需要6次,理论上三层架构最少都能存储2ZB的数据。
0.96以上版本的双层架构,三层架构使hbase最少存2ZB的数据,事实上根本用不到这么多,于是删除了root表,只使用meta表定位,meta表的一个region最多可以定位16TB的行键范围,假设一个行键范围包括10条数据,就已经是160TB了,假如一个region大于128M,则更多了,因此根本不需要root表。