目录表hbase:meta存在于HBase表中,在HBase shell中list命令中会过滤掉,但实际和普通表无任何区别。
1 -ROOT-
-ROOT-表在HBase 0.96后被移除。
-ROOT-表记录.META.表位置(现在叫hbase:meta),-ROOT-表结构如下:
key
- .MeTA. region key (.META.,,1)
Values
- info:regioninfo (.META.表中可序列化HRegionInfo实例)
- info:server (.META.表所在RegionServer,格式server:port)
- info:serverstartcode (RegionServer进程持有.META.表起始时间)
2 hbase:meta
hbase:meta表维持系统中所有regions列表,hbase:meta表位置记录在ZooKeeper中,hbase:meta表结构如下:
key
- 格式化后的Region key ([table],[region start key],[region id])
Values
- info:regioninfo (此region可序列化HRegionInfo实例)
- info:server (此region所在RegionServer,格式server:port)
- info:serverstartcode (RegionServer进程持有此region起始时间)
当一个表正处于splitting时,额外的两个columns将会被创建,称之info:splitA和info:splitB,这些列代表两个子region,这些列的值也被序列化为HRegionInfo实例。region分裂完毕后,最后这一行被删除。
3 启动顺序
首先,hbase:meta的位置从ZooKeeper中查找,然后hbase:meta更新server和startcode的值。
4 小结
由于以前-ROOT-表始终只有一个region,现在直接用Zookeeper替换合情合理,一个Put操作流程大致是这样:
table.Put(rowkey)
,由此可见,要找到table和rowkey:
Zookeeper–>定位hbase:meta–>查找hbase:meta,找到对应rowkey(通过table,regions tart key)–>通过该rowkey取info:server值–>得到对应表regionserver–>交互