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状态不一致的现象
分享到:
相关推荐
#### 二、HBase系统搭建与部署流程 ##### 2.1 准备阶段 **2.1.1 开源社区版本下载** HBase可以从Apache官方网站下载开源社区版本,地址为:[http://hbase.apache.org/](http://hbase.apache.org/)。该版本通常包含...
少儿编程scratch项目源代码文件案例素材-直升机飞行.zip
wanjunshe_Python-Tensorflow_12888_1745868924470
健康监测_Android开发_BLE蓝牙通信_心率数据采集与存储_基于小米手环2的实时心率监测应用_支持后台长时间运行的心率记录工具_可导出SQLite数据库的心率数据分析系统_适
少儿编程scratch项目源代码文件案例素材-种花模拟器.zip
嵌入式系统开发_FreeRTOS实时操作系统_STM32F103C8T6微控制器_OLED显示屏_DHT11温湿度传感器_多任务调度_多级菜单设计_万年历算法_电子闹钟功能_参数配
基于python实现的粒子群的VRP(车辆配送路径规划)问题建模求解+源码+项目文档+算法解析,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档 算法设计的关键在于如何向表现较好的个体学习,标准粒子群算法引入惯性因子w、自我认知因子c1、社会认知因子c2分别作为自身、当代最优解和历史最优解的权重,指导粒子速度和位置的更新,这在求解函数极值问题时比较容易实现,而在VRP问题上,速度位置的更新则难以直接采用加权的方式进行,一个常见的方法是采用基于遗传算法交叉算子的混合型粒子群算法进行求解,这里采用顺序交叉算子,对惯性因子w、自我认知因子c1、社会认知因子c2则以w/(w+c1+c2),c1/(w+c1+c2),c2/(w+c1+c2)的概率接受粒子本身、当前最优解、全局最优解交叉的父代之一(即按概率选择其中一个作为父代,不加权)。 算法设计的关键在于如何向表现较好的个体学习,标准粒子群算法引入惯性因子w、自我认知因子c1、社会认知因子c2分别作为自身、当代最优解和历史最优解的权重,指导粒子速度和位置的更新,这在求解函数极值问题时比较容易实现,而在VRP问题上,速度位置的更新则难以直接采用加权的方式进行,一个常见的方法是采用基于遗传算法交叉算子的混合型粒子群算法进行求解,这里采用顺序交叉算子,对惯性因子w、自我认知因子c1、社会认知因子c2则以w/(w+c1+c2),c1/(w+c1+c2),c2/(w+c1+c2)的概率接受粒子本身、当前最优解、全局最优解交叉的父代之一(即按概率选择其中一个作为父代,不加权)。
scratch少儿编程逻辑思维游戏源码-猫猫粉碎.zip
scratch少儿编程逻辑思维游戏源码-蓝胡子.zip
scratch少儿编程逻辑思维游戏源码-美食大亨.zip
scratch少儿编程逻辑思维游戏源码-洛克人.zip
scratch少儿编程逻辑思维游戏源码-龙冲刺.zip
思幻个人引导页V2.2版本11月29日更新.zip
scratch少儿编程逻辑思维游戏源码-骑士风斩法.zip
移动应用开发_H5CSS3ionicng-cordovaMVVM模式_基于HTML5和CSS3技术实现多页面布局ionic指令数据绑定ui-route单页跳转调用手机
少儿编程scratch项目源代码文件案例素材-植物大战僵尸创造版 Ver. 1.0.3.zip
scratch少儿编程逻辑思维游戏源码-日落(2).zip
动态星空背景个人主页(带后台).zip
scratch少儿编程逻辑思维游戏源码-迷雾森林:诞生 3.2 起源觉醒.zip
lib文件