hadoop ha异常场景解释

本文详细分析了Hadoop HA中出现的各种异常场景,如kill ANN、kill ANN节点的DFSZKFailoverController、删除znode等,以及这些异常下集群的响应和切换过程。同时,探讨了HA切换的原理,包括流程、线程模型和RPC代理对象的工作方式。此外,还研究了不同切换耗时的情况,如kill ANN、断网和磁盘空间不足时的切换时间。
摘要由CSDN通过智能技术生成

1 异常场景

1.1 kill ANN

现象:SNN变为ANN

在这里插入图片描述

解释:

  1. ANN所在HealthMonitor检测到健康状态为SERVICE_NOT_RESPONDING,发生状态切换,执行回调函数
  2. 在回调函数中执行quitElection(true)方法(参数为true代表不删除ActiveBreadCrumb节点,该节点存在代表需要fence)退出选举,设置服务状态为INITIALIZING
  3. 在quitElection()方法中会断开与zookeeper的连接并销毁zookeeper客户端对象
  4. 在会话超时时间过期后,zookeeper中的ActiveStandbyElectorLock节点被销毁
  5. SNN所在节点的ZKFC观察到ActiveStandbyElectorLock节点被删除(在构造zookeeper客户端对象时就关联了watch,会观察连接和节点变化情况),会调用joinElectionInternal()方法加入选举,尝试创建ActiveStandbyElectorLock节点成功,变为ANN。

此时,如果再启动原ANN节点的Namenode进程,则该Namenode状态会保持为Standby,因为此时ActiveStandbyElectorLock节点已经被原SNN节点持有。

1.2 kill ANN节点所在的DFSZKFailoverController

现象:ANN节点变为SNN,SNN节点变为ANN

在这里插入图片描述

解释:

  1. DFSZKFailoverController被kill,与zookeeper的会话超时,ActiveStandbyElectorLock节点被自动删除。
  2. SNN所在节点的ZKFC观察到ActiveStandbyElectorLock节点被删除,会调用joinElectionInternal()方法加入选举,尝试创建ActiveStandbyElectorLock节点成功,变为ANN。
  3. 再调用becomeActive()变为ANN之前会执行fence过程,fence会首先通过代理对另一个Namenode调用transitionToStandby()方法令其优雅的变为Standby状态,在这个场景中会执行成功。

1.3 删除znode

现象:重新进行选举,随机变为ANN和SNN

在这里插入图片描述

解释:

  1. 两个ZKFC都观察到ActiveStandbyElectorLock节点被删除,ANN节点会调用enterNeutralMode()方法和joinEletionInternal()方法,SNN节点会调用joinEletionInternal()方法。
  2. 之后流程和正常启动过程类似

1.4 kill zookeeper集群

现象:没有变化,集群仍正常提供服务

在这里插入图片描述

解释:

  1. 两个ZKFC都观察到和zookeeper的连接断开(DISCONNECTED状态)
  2. 两个ZKFC都调用enterNeutralMode()方法,这个方法不会执行任何功能逻辑,只是改变现在的一个状态标识
  3. 此时
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值