HBase Meta表与Root表

HBASE 二月 08, 2020

HBase Meta表与Root表

文章字数 1.1k 阅读约需 1 mins. 阅读次数 1000000

Meta表的作用

记录的信息:

  1. 数据的Rowkey在哪个Region的范围
  2. Region在哪个RegionServer上

(Region是HBase中分布式存储和负载均衡的最小单元)

Meta表的Rowkey

region所在的表名+region的StartKey+时间戳

这三者的MD5值也是HBase在HDFS上存储的region名字

Meta表的列族和列

表中最主要的Family:info

info里包含三个Column:regioninfo,server,serverstartcode

regioninfo就是region的详细信息,包括Startkey、Endkey以及每个Family的信息等。

server存储的是管理该region的RegionServer地址

因此当Region被拆分、合并或者重新分配的时候都需要修改这张表的内容。

Region的定位

如果是第一次读取:

  1. 读取zookeeper中root表的位置
  2. 从root表中读取包含所需用户表的meta表的位置
  3. 读取Meta表中用户表的位置
  4. 读取数据

如果已经读取过一次,则root表和Meta表都会缓存到本地,直接去用户表的位置读取数据

Client端在访问数据的过程中并没有涉及到Master节点,也就是说HBase日常的数据操作并不需要Master,不会造成Master的负担。

从存储结构和操作方法的角度来说,-ROOT-、.META.与其他表没有任何区别。它们与众不同的地方是HBase用它们来存贮一个重要的系统信息:

  • -ROOT-:记录.META.表的Region信息。
  • .META.:记录用户表的Region信息。

其中-ROOT-表本身只会有一个region,这样保证了只需要三次跳转,就能定位到任意region

0%