作者: 康凯森
日期: 2016-04-03
分类: HBase
我们知道HBase的表是会分割为多个Region的,不同Region分布到不同RegionServer上。Region 是 HBase中分布式存储和负载均衡的最小单元。
所以当我们从客户端读取,写入数据的时候,我们就需要知道我么数据的 Rowkey是在哪个Region的范围以及我们需要的Region是在哪个RegionServer上。
而这正是HBase Meta表所记录的信息。
region所在的表名+region的StartKey+时间戳。而这三者的MD5值也是HBase在HDFS上存储的region的名字。
表中最主要的Family:info
info里面包含三个Column:regioninfo, server, serverstartcode。
其中regioninfo就是Region的详细信息,包括StartKey, EndKey 以及每个Family的信息等。server存储的就是管理这个Region的RegionServer的地址。
所以当Region被拆分、合并或者重新分配的时候,都需要来修改这张表的内容。
第一次读取: 步骤1:读取ZooKeeper中META表的位置。 步骤2:读取.META表中用户表的位置。 步骤3:读取数据。
如果已经读取过一次,则root表和.META都会缓存到本地,直接去用户表的位置读取数据。