`
punishzhou
  • 浏览: 141347 次
社区版块
存档分类
最新评论

HMaster的failover 流程

阅读更多

HBase的master重启时走的是failover流程。

 

由于在HMaster挂掉的瞬间有很多正在执行的事务,如:

 

1.  某个table可能正在disable到一半,master挂掉

 

2.  create table到一半,master挂掉

 

3.  move 动作到一半,master挂掉当

 

master挂掉的时候,这些动作是不一致的,即可能出于一个中间状态。如某张表的某些region上线,某些却无法访问。

 

更有甚者在master1挂掉期间,又发生了regionserver的宕机事件。

 

当master重启时需要把事务或者继续完成或者回滚,达到最终一致的效果。把hmaster的failover分成两部分来理解:

 

1.master挂掉期间没有regionserver挂掉这种情况比较简单。

 

1.1.扫描Meta表将所有region加入master内存中,除了以下几种情况:

 

1.1.1 region的server address不存在,发生在create table时候master挂掉,此时meta表中值写了该region

 

的info。(对于这种情况90似乎也没有好的解决办法,只能是在meta表中有垃圾信息存在)

 

1.1.2 region所在的table是disabling或是disabled(disabling是disable table到一半master挂掉导致zk状态

 

一直没有更新,disabled说明disabled已经成功了,region都已经关闭了也无需加入master内存)

 

1.1.3 父region是不上线的

 

1.2.找到zk上面所有unassigned节点进行如下处理(任何对region的ddl操作都是通过zk来保持一致性的,因此需要对

 

zk上面的节点进行整理和删除等)

 

1.2.1 如果RIT中有该节点的region(正常hmaster启动的时候rit是空的,但是有一种情况是,此时有RS挂了,要

 

处理ssh事件,会将该rs的region重新分配加入到rit中),因此对于rit已有的region就不需要再重新加入了

 

1.2.2 对于这些在rit中node节点数据

 

  如果是M_ZK_REGION_CLOSING,说明有regionserver正在close该region,rs后续会更新zk上的信息的,故只需将

 

其加入RIT中即可

 

  如果是RS_ZK_REGION_CLOSED,说明rs已经将region关闭了,但是有可能master未收到这个事件就挂了,所以要

 

将其加入RIT,然后继续调用closedRegionhandler.process来清除master内存数据

 

  如果是RS_ZK_REGION_FAILED_OPEN,说明在open region时候出错,此时rs会关闭region,收到此事件master

 

一样加入RIT,并ClosedRegionHandler .process

 

  如果是M_ZK_REGION_OFFLINE,此时也要ClosedRegionHandler .process,因为可能和rs的rpc通信尚未发出请

 

求就挂了,zk节点就一致不会更新,该region就不会再分配。

 

  如果是RS_ZK_REGION_OPENING,region正在被rs打开,rs会更新zk节点,只要加入rit即可

 

  如果是RS_ZK_REGION_OPENED,region已经打开,但该事件可能未被master收到,故要openedregionhanlder

 

更新master内存

 

以上如果有region处于disabling和disabled的状态的话是不会再open region的

 

注:processfailover以后master会对disabling的table重新disable。这样可防止region状态不一致的现象

 

 

 

 

分享到:
评论

相关推荐

    大数据运维技术第7章 HBase组件安装与配置课件.pptx

    HBase的体系结构是一个主从式的结构,主节点HMaster在整个集群当中只有一个在运行,从节点HRegionServer有很多个在运行,主节点HMaster与从节点HRegionServer实际上指的是不同的物理服务器,即有一个服务器上面跑的...

    分布式数据库HBase深入使用

    HMaster也需要连接ZooKeeper,链接的作用是:HMaster需要知道哪些HRegionServer是活动的及HRegionServer所在位置,然后管理HRegionServer。 HBase内部是把数据写到HDFS上的,DFS有客户端 Region中包含HLOG、Store。...

    HBase核心模块介绍及基本概念介绍(HBase模式设计)

    Client是整个HBase系统的入口客户端使用RPC协议与HMaster和RegionServer进行通信对于管理类(表的增删)操作,Client与HMaster进行RPC通信对于数据读写类操作Client与RegionServer进行RPC交互客户端可以是多个,也...

    分布式协调工具-ZooKeeper实现动态负载均衡

    在Hbase实现中,会在ZK上存储一些ROOT表的地址和HMaster的地址,HRegionServer也会把自己以临时节点(Ephemeral)的方式注册到Zookeeper中,使得HMaster可以随时感知到各个HRegionServer的存活状态,同时,一旦...

    CDH5.11安装文档

    172.30.5.243 namenode,zookeeper, HMaster,kafka,spark, elasticsearch master 内存:64GB 硬盘:7T 172.30.5.244 secorndaryNameNode,datanode,zookeeper,kafka, HRegionServer,spark, elasticsearch slave1 内容...

    深入理解HBase的系统架构

    HMaster,ZooKeeper。其中Regionserver负责数据的读写服务。用户通过沟通Regionserver来实现对数据的访问。HBaseHMaster负责Region的分配及数据库的创建和删除等操作。ZooKeeper作为HDFS的一部分,负责维护集群的...

    HBase的安装与配置

    Hbase的安装与配置 1、前提:要有装好的hdfs分布式文件系统和zookeeper集群 2、各台linux机器上传hbase安装包:hbase-0.98.12.1-hadoop2...13、为保证集群的可靠性,要启动多个HMaster hbase-daemon.sh start master

Global site tag (gtag.js) - Google Analytics