本篇博客小菌为大家带来的是HBase的Region管理与Master工作机制。
首先让我们来看下region的管理,当然这存在一个前提: 任何时刻,一个region只能分配给一个region server。
前提: master使用zookeeper来跟踪region server状态。
前提: master使用zookeeper来跟踪region server状态。
Master 的工作机制也分为上线和下线两种。
前提:hbase集群中可以设置多个Hmaster,真正对外提供服务的只有一个
master启动进行以下步骤:
1.从zookeeper上获取唯一 一个代表active master的锁,用来阻止其它master成为真正的master。
2.扫描zookeeper上的/hbase/rs节点,获得当前可用的region server列表。
3.master和每个region server通信,获得当前已分配的region和region server的对应关系。
4.master扫描.META.表,计算得到当前还未分配的region,将他们放入待分配region列表。
针对master上线的几个步骤,可以高度抽象为以下几个问题。
问题一: 如何确定哪个master是真正的master 看谁获得了 active master 的锁
问题二: master如何知道有哪些regionserver 扫描zookeeper 上的/hbase/rs 节点
问题三: master 如何知道region与regionserver之间的对应关系 master 和 每个region server 通信,regionserver 之间的对应关系。
问题四: master 如何知道哪些region还未分配 master扫描.META.表,计算得到当前还未分配的region。
master只维护表和region的元数据,不参与表数据IO的过程,所以master下线短时间内对整个hbase集群没有影响。表的数据读写还可以正常进行。
1.无法创建删除表,无法修改表的schema,无法进行region的负载均衡,无法处理region 上下线,无法进行region的合并(region的split可以正常进行)。
2.当hmaster下线后,启动Zookeeper的选举机制,选出新的Hmaster,新的Hmaster上线,执行上线流程。 本次的分享就到这里就结束了,受益的小伙伴或对大数据感兴趣的朋友记得关注小菌哟(^U^)ノ~YO