在hbase0.98之前hbase元数据表有两个:ROOT表与meta表。在hbase0.98之后,hbase就废弃了ROOT表,仅保留meta并且该表不允许split,所以只有一个Region。
meta表位置
meta表保存了集群中所有region的位置信息,当我们通过客户端put,get,delete等操作数据的时候,首先会去这个表里查找该数据所在的regionserver位置。
但是 meta表也是一个hbase表,那怎么找个表的regionserver呢?答案时:通过zookeeper。
hbsse把meta表的region信息保存到了zookeeper里,对应路径为:/hbase/meta-region-server
meta表结构信息
rowkey为:**表名,该region的startKey,创建时间.hash值**。
其中:hash值为:MD5Hash.getMD5AsHex(byte(表名,该region的startKey,创建时间))
如果当前region为table的第一个region时,region startKey=null
meta表只有一个列簇info,并且包含四列:
- regioninfo :当前region的startKey与endKey,name,encode等消息
- seqnumDuringOpen:
- server:region所在服务器及端口
- serverstartcode:服务开始的时候的timestamp