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状态不一致的现象
分享到:
相关推荐
例如,给定的配置中,192.168.11.12是主HMaster,192.168.11.14是备用HMaster,192.168.11.16、192.168.11.18和192.168.11.20作为Zookeeper和HRegionServer节点,而192.168.11.12到192.168.11.20同时也是HDFS的数据...
2. **HBase启动流程** - HBase 的启动过程涉及到多个组件之间的交互。 - 当集群启动时,HMaster 会初始化并监听 Zookeeper 上的状态变化。 - 同时,RegionServer 会注册到 HMaster,并接收来自 HMaster 的指令...
当超时时间到后,RegionServer 会被 Zookeeper 从 RS 集群中移除,HMaster 收到移除通知后,会对这台 server 负责的 regions 重新 balance,让其他存活的 RegionServer 接管。 然而,调整这个 timeout 值需要谨慎,...
Huawei 的实践和经验在 HBase 和 OpenTSDB 方面非常丰富,涵盖了加速 HMaster 启动、增强复制机制、迁移到 2.1.x 集群、加速数据摄取、增强数据压缩和提高查询性能等多个方面。这些实践和经验对于大数据时代的企业来...
HMaster,很多服务器上面跑的进程是 HRegionServer,HMaster 没有单点问题,HBase 集群当中可以启动多个 HMaster,但是通过 ZooKeeper 的事件处理机制保证整个集群当中只有一个 HMaster 在运行。 HBase 组件设置 ...
HBase中的多个HMaster通过Zookeeper的Master Election机制来确定主HMaster,主HMaster负责管理表和Region的生命周期,包括表的创建、删除、分区以及Region的迁移等。 HRegionServer是HBase的核心组件,它们直接处理...
【HBase工作流程】 1. **数据路由**:客户端首先通过ZooKeeper找到Meta Region,然后通过Meta Region找到目标UserRegion所在的RegionServer。 2. **数据读写**:客户端直接与RegionServer交互,进行数据的读写操作...
1. 加速 HMaster 启动:华为采用了并行计算 Region-locality 的方法来加速 HMaster 的启动,同时还 detach 了 Region-locality 计算在启动时。 2. 系统表区域 asign:华为将系统表区域分配给 HMaster,以便在启动时...
Hbase的架构主要包括HMaster、HRegionServer、ZooKeeper以及客户端(Client)等组件。 1. HMaster:负责管理表的生命周期,如创建、删除、修改表。它还执行负载均衡,动态调整HRegion的分布,以及在HRegionServer...
通过阅读《HBase实战源码》,读者可以了解到上述组件的实现细节,包括数据存储格式、数据分布策略、并发控制以及各种操作的内部流程。这对于优化HBase性能、排查问题以及开发定制化功能具有极高的价值。深入源码,能...
本教程将介绍HBase的基础知识,包括其作用、特点、与传统关系型数据库的差异、表模型、工作机制、安装方式、读写流程以及架构等内容。 HBase作用与特点: HBase是一个分布式的、列式存储、多版本、非关系型的数据库...
3. 基于 Zookeeper 的 ZKFC (Zookeeper Failover Controller) 自动切换机制,当 Active NN 故障时,Standby NN 会自动接管并成为新的 Active NN。 **ResourceManager (RM) HA 实现方式**: 1. RM 将状态信息存储在 ...
该环境包括 NameNode、DataNode、JobTracker、TaskTracker、HMaster、HRegionServer、SecondaryNameNode、HQuorumPeer 等组件,其中 NameNode 负责管理文件系统,DataNode 负责存储和处理数据,JobTracker 负责任务...
HMaster也需要连接ZooKeeper,链接的作用是:HMaster需要知道哪些HRegionServer是活动的及HRegionServer所在位置,然后管理HRegionServer。 HBase内部是把数据写到HDFS上的,DFS有客户端 Region中包含HLOG、Store。...
Kafka的部署环境中,work1、work2、work3和work4部署了四个broker,hmaster和work6作为客户端来测试Kafka的写入速度。work的配置为8核16G,hmaster的配置为4核16G。 三、测试Topic和分区 在测试中,建立了两个...
"图画.png"可能是对HBase架构或者工作流程的可视化展示,帮助我们直观理解HRegionServer、HMaster、Zookeeper等组件的作用,以及数据在Region、StoreFile之间的分布和交互。 "08.HBase[1].pptx"可能是课程的幻灯片...
1. HMaster:负责全局协调,包括 Region 分配、Region 服务器的监控与故障恢复、元数据的更新等。HMaster并不参与数据存储和处理,而是专注于集群的管理和维护。 2. HRegionServer:实际存储和处理数据的节点,每个...
目前的系统架构只能实现内存扩展,而无法有效地实现故障切换(failover),当内存数据达到一定比例时,写入效率会下降。此外,添加新节点需要匹配现有节点的内存配置,否则无法充分利用服务器性能。 在对比了多种...
1. 写入流程:客户端将数据发送到最近的RegionServer,RegionServer根据行键将数据插入到对应Region,并添加时间戳,然后更新到内存中的MemStore,当MemStore达到一定大小或系统设置的条件时,数据会被刷写到HDFS。...
默认值为3分钟(180000ms),如果超时时间到达,RegionServer将被Zookeeper从RS集群中移除,HMaster将对该服务器负责的regions重新平衡,让其他存活的RegionServer接管。 调优:这个超时时间决定了RegionServer是否...