目录表是指作为HBase数据表存在的两个特殊的数据表-ROOT-和.META.。在使用HBase shell的list命令时,这两个表会被过滤掉,但事实上,它们就像其他的数据表一样。
9.2.1 ROOT
-ROOT-记录.META.表的位置,它的表结构如下:
键:
- .META. region key (
.META.,,1
)
值:
info:regioninfo
(serialized HRegionInfo instance of .META.)info:server
(server:port of the RegionServer holding .META.)info:serverstartcode
(start-time of the RegionServer process holding .META.)
9.2.2 META
.META.表存储系统中所有region的列表,它的表结构如下:
键:
- Region key of the format (
[table],[region start key],[region id]
)
值:
info:regioninfo
(serialized HRegionInfo instance for this region)info:server
(server:port of the RegionServer containing this region)info:serverstartcode
(start-time of the RegionServer process containing this region)
当一个表处于分裂过程时会创建另外的两个列,info:splitA和info:splitB代表该region的两个子女。这些列的值时序列化的HRegionInfo实例。在region分裂结束后,原来的行会被删除掉。
HRegionInfo的注意事项:空的键用于记录表的开始和结束。以一个空的键未开始的region是表的第一个region。如果一个表既以空的键开始又以空的键结束,说明该表仅有一个region。
9.2.3 启动顺序
首先,ROOT将记录META的位置,之后META更新服务器(server)及起始码(startcode)的值。