Hbase元数据解读-catalog table

2022-07-28,,,,

Hbase元数据解读catalog table

Hbase的catalog table存在在Hbase系统中的hbase:meta表中(之间叫.META.),但是该表对Hbase shell是不可见的,但是实际上,它和其它的表没有任何区别。

Hbase:meta表的存储路径会被存储在Zookeeper的hbase节点下面

1、 hbase:meta的表结构

  • rowkey的格式为:(table,region‘s startkey,region id)
    • table就是表名
    • region’s startkey这个region的起始范围界线
    • region id为Hbase给region分配的id,用来区分
  • value的格式为:【column-family为info】【column qualifier为region info,server,serverstartcode】
    • Info:regioninfo, 代表每个region对应的序列化之后的HRegionInfo的实例
    • info:server,代表该region所在的regionserver的ip:port信息
    • info:serverstartcode , 代表server开始管理该region的起始时间

当一个region进入splitting阶段,那么此时region是不可用的,2个另外的column 将会在hase:meta中被创建:info:splitA、info:splitB,A和B都是当前region的子Region,这2个列的value也是HRegionInfo的序列化后的实例,当这个region完成split操作之后,通常这个region的旧row将会被删除,同时子region的新的row将会被生成。

NOTE⚠️,假如一个region的start_key为空,那么该region一定是该表的第一个region,假如start_key和end_key都是空,那么这个table一定只有一个region

2、Hbase的启动顺序与hbase:meta

2.1 Master的启动与RegionServer的分配

  • Master首先在zookeeper中找到hbase:meta的位置

  • hbase master根据info:serverstartcode和server更新hbase:meta

  • 最后以最新的元数据启动,并分配regionserver

    • Master调用AssignmentManager
    • AssignmentManager根据hbase:meta查找存在region分配
    • 如果regionserver还生效,那么就按照元数据进行分配
    • 如果元数据中指定的regionserver不生效了,然后调用LoadBalancerFactory创建StochasticLoadBalancer实例去重新分配失效的regionserver中的region至其它生效的regionserver
    • hbase:meta在分配regionserver的时候得到更新,同时regionserver对每个重新分配的region的startcode也会被更新
  • 最终整个Hbase集群被启动

本文地址:https://blog.csdn.net/shufangreal/article/details/109649230

《Hbase元数据解读-catalog table.doc》

下载本文的Word格式文档,以方便收藏与打印。