Hbase存储详解 (4)

  当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目录下代表这台region server的文件,并将这台region server的region分配给其它还活着的同志。

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

  master上线

  master启动进行以下步骤:

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

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

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

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

  master下线

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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgfzyp.html