HBase之RegionServer上线和下线及Master上线和下线

RegionServer上线和下线

Master使用Zookeeper跟踪RegionServer状态。当某个RegionServer启动时,会首先在Zookeeper上的Server目录下建立代表自己的文件,并获得该文件的独占锁。由于Master订阅了Server目录上的变更信息,当Server目录下的文件出现新增或者删除操作时,Master可以得到来自Zookeeper的实时通知。因此一旦RegionServer上线,Master能马上得到消息。

当RegionServer下线时,它和zookeeper的回话断开,zookeeper自动释放代表这台Server的文件的独占锁。而Master不断轮询Server目录下文件的锁状态。如果Master发现某个RegionServer丢失自己的的独占锁,或者Master连续几次和RegionServer通信都无法成功,Master就尝试去获取代表这个RegionServer的读写锁。一旦获取成功,就可以确定RegionServer和zookeeper之间的网络断开或RegionServer挂了。无论哪种情况发生,RegionServer都无法继续为它的Region提供服务,此时Master会删除Server目录下代表这台RegionServer的文件,并将这台RegionServer的Region分配给其他还活着的节点。

如果网络短暂出现问题导致RegionServer丢失它的锁,RegionServer重新连接到Zookeeper之后,只要代表它的文件还在,它就会不断尝试这个文件上的锁,一旦获取到,就可以继续提供服务。

Master上线和下线

Master启动进行一下步骤:

1)从Zookeeper上获取唯一代表Master的锁,用来阻止Standby Master成为Master

2)扫描Zookeeper上的Server目录,获得当前可用的RegionServer列表

3)与步骤(2)中获取的所有RegionServer进行通信,获得当前已分配的Region和RegionServer的对应关系

4) .META. 表中Region的集合,计算得到当前还未分配的Region,将它们放入待分配Region列表。

由于Master只维护表和Region的元数据,而不参与表数据 I/O 的过程,Master下线仅导致所有元数据的修改被冻结(无法创建删除表,修改表的Schema、进行Region负载均衡因为只有Regionserver参与),表的数据读写还可以正常进行。因此Master下线短时间内对整个HBase集群没有影响。

从上线过程可以看到,Master保存的信息全是冗余信息(都可以从系统其它地方收集到或计算出来),因此,一般HBase集群中总是有一个Master在提供服务,还有一个以上的Master在等待时机抢占它的位置。

2.region分配

    任何时刻,一个region只能分配给一个region server。master记录了当前有哪些可用的region server。以及当前哪些region分配给了哪些region server,哪些region还没有分配。当存在未分配的region,并且有一个region server上有可用空间时,master就给这个region server发送一个装载请求,把region分配给这个region server。regionserver得到请求后,就开始对此region提供服务。
 

3.region server上线

     master使用zookeeper来跟踪regionserver状态。当某个region server启动时,会首先在zookeeper上的server目录下建立代表自己的文件,并获得该文件的独占锁。由于master订阅了server目录上的变更消息,当server目录下的文件出现新增或删除操作时,master可以得到来自zookeeper的实时通知。因此一旦region server上线,master能马上得到消息。

4.region server下线

     当region server下线时,它和zookeeper的会话断开,zookeeper而自动释放代表这台server的文件上的独占锁。而master不断轮询server目录下文件的锁状态。如果master发现某个region server丢失了它自己的独占锁,(或者master连续几次和region server通信都无法成功),master就是尝试去获取代表这个region server的读写锁,一旦获取成功,就可以确定:

1 )region server和zookeeper之间的网络断开了。

2 )region server挂了。

的其中一种情况发生了,无论哪种情况,region server都无法继续为它的region提供服务了,此时master会删除server目录下代表这台regionserver的文件,并将这台region server的region分配给其它还活着的同志。

     如果网络短暂出现问题导致region server丢失了它的锁,那么regionserver重新连接到zookeeper之后,只要代表它的文件还在,它就会不断尝试获取这个文件上的锁,一旦获取到了,就可以继续提供服务。

5.master上线

master启动进行以下步骤:

1) 从zookeeper上获取唯一一个代码master的锁,用来阻止其它master成为master。

2 )扫描zookeeper上的server目录,获得当前可用的region server列表。

3) 和2)中的每个regionserver通信,获得当前已分配的region和regionserver的对应关系。

4 )扫描.META.region的集合,计算得到当前还未分配的region,将他们放入待分配region列表。

6.master下线

      由于master只维护表和region的元数据,而不参与表数据IO的过程,master下线仅导致所有元数据的修改被冻结(无法创建删除表,无法修改表的schema,无法进行region的负载均衡,无法处理region上下线,无法进行region的合并,唯一例外的是region的split可以正常进行,因为只有regionserver参与),表的数据读写还可以正常进行。因此master下线短时间内对整个hbase集群没有影响。从上线过程可以看到,master保存的 信息全是可以冗余信息(都可以从系统其它地方收集到或者计算出来),因此,一般hbase集群中总是有一个master在提供服务,还有一个以上 的’master’在等待时机抢占它的位置。
 

猜你喜欢

转载自blog.csdn.net/qq_43193797/article/details/86604153
今日推荐