HBase:Region管理与Master工作机制

        本篇博客小菌为大家带来的是HBase的Region管理与Master工作机制。

region 的管理

        首先让我们来看下region的管理,当然这存在一个前提: 任何时刻,一个region只能分配给一个region server

  • 1.master记录了当前有哪些可用的region server。以及当前哪些region分配给了哪些region server,哪些region还没有分配。
  • 2.当需要分配的新的region,并且有一个region server上有可用空间时,master就给这个region server发送一个装载请求,把region分配给这个region server。
  • 3.region server得到请求后,就开始对此region提供服务。

在这里插入图片描述

region server上线

前提: master使用zookeeper来跟踪region server状态。

  • 1.当某个region server启动时,首先在zookeeper上的/hbase/rs目录下建立代表自己的znode。
  • 2.master订阅了/hbase/rs目录上的变更消息,当/hbase/rs目录下的文件出现新增或删除操作时,master可以得到来自zookeeper的实时通知。因此一旦region server上线,master能马上得到消息。

region server下线

前提: master使用zookeeper来跟踪region server状态。

  • 1.当region server下线时,它和zookeeper的会话断开。
  • 2.zookeeper而自动释放代表这台server的文件上的独占锁(znode)
  • 3.zookeeper将变化发送给master
  • 4.master 将挂掉的region server的region分配给其它还活着的regionserver。

Master工作机制

Master 的工作机制也分为上线和下线两种。

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。

        

Hmaster下线

master只维护表和region的元数据,不参与表数据IO的过程,所以master下线短时间内对整个hbase集群没有影响。表的数据读写还可以正常进行。

Hmaster下线后的影响

1.无法创建删除表,无法修改表的schema,无法进行region的负载均衡,无法处理region 上下线,无法进行region的合并(region的split可以正常进行)。

2.当hmaster下线后,启动Zookeeper的选举机制,选出新的Hmaster,新的Hmaster上线,执行上线流程。
        
        
        本次的分享就到这里就结束了,受益的小伙伴或对大数据感兴趣的朋友记得关注小菌哟(^U^)ノ~YO

在这里插入图片描述

发布了146 篇原创文章 · 获赞 1340 · 访问量 35万+

猜你喜欢

转载自blog.csdn.net/weixin_44318830/article/details/103656799
今日推荐