关于hadoop-2.6.0 HA模式下HDFS自动failover切换的一点经验

以我的经验,杀死原来ACTIVE namenode上的NameNode进程,会成功自动切换;而采用down掉网卡(ifdown  <dev>命令)的方法,不一定能够成功切换。根据我的经验这主要是与fencing方法的设置有关。Hadoop提供的两种fencing方法是sshfence和shell,其中sshfence要求ssh登录到目标结点杀死NameNode进程,因此当仅仅配置fencing方法是sshfence之后,当原active namenode的网卡down掉之后,原standby namenode的zkfc实际上已经不能ssh到原active namenode上杀死NameNode进程,因此该fencing不能成功执行,因此无法继续切换自己的状态成active,只能不断尝试。这可以通过tail -f命令观察原standby namenode的zkfc日志知道这个问题。查看这个日志,应该可以包括下面消息在内的信息:

“INFO org.apache.hadoop.ha.ZKFailoverController: Should fence: NameNode at ...”。

sshfence失败导致不能切换之后,如果这时候恢复网卡连通性(ifup <dev>),那么切换过程又可以继续进行下去,仍然完成将原来active/standby结点状态对调的切换。

修改dfs.ha.fencing.methods的配置,增加shell(/bin/true)方法或仅仅配置这个方法,可以使得网卡中断后切换成功进行。注意,我注意到dfs.ha.fencing.methods这个属性和dfs.ha.fencing.ssh.private-key-files属性都在core-default.xml找到,所以我将配置移到了core-site.xml中(不过感觉没有影响)。

成功切换之后,也有一种情况下需要注意一下,就是当网卡恢复连通后,原来active namenode的NameNode进程反而因为恢复连通后导致的写edits log的问题退出进程(可以在该结点的namenode日志看到“FATAL org.apache.hadoop.hdfs.server.namenode.FSEditLog: Error: flush failed for required journal”的信息)。因此可能还有手工重新启动一下namenode进程(启动后是standby状态)。


大致的图示如下:


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值