Hbase元数据解读-catalog table
程序员文章站
2022-06-16 20:34:16
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也会被更新
- Master调用
-
最终整个Hbase集群被启动
本文地址:https://blog.csdn.net/shufangreal/article/details/109649230