欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Hbase元数据解读-catalog table

程序员文章站 2022-03-13 22:44:32
Hbase源数据解读catalog tableHbase的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...

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