目录表 hbase:meta 作为 HBase 表存在,虽然它会从 HBase shell 的 list 命令中过滤掉,但实际上它也是一个表,像任何其他表一样。

67.1. hbase:meta

hbase:meta 表(以前称为.META.)保存系统中所有 region 的列表,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 (包含此 region 的 RegionServer 进程的开始时间)

当一个表处于拆分过程中时,将创建额外两个列,称为 “info:splitA” 和 “info:splitB”。这些列代表两个子 region。它们的值也是序列化后的 HRegionInfo 实例。region 分割完成后,最终将删除此行。

HRegionInfo 说明

空白 key 用于表示表的开始和结束。拥有空白开始 key 的 region 是表中的第一个 region。如果某个 region 同时包含空白开始 key 和空白结束 key,则它是表中唯一的 region

在(希望不太可能)需要编程处理目录元数据的场景下,请参阅[RegionInfo.parseFrom](https://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/client/RegionInfo.html#parseFrom-byte:A-)实用程序。

67.2. 启动顺序

首先,在 ZooKeeper 中查询 hbase:meta 的位置信息。然后,使用服务器和启动编码更新 hbase:meta 的值

有关 region-RegionServer 分配的信息,参阅Region-RegionServer Assignment