关于namenodeHA切换失败问题的解决方法

问题描述:今天启动集群环境测试namenodeHA的时候,发现停掉节点1的namenode后,节点2的namenode无法切换为active,仍然处于standby状态,重新启动停掉的节点1的namenode后,节点2的namenode会切换到active状态,节点1的namenode变成standby状态。
错误截屏:
图1:hadoop-root-zkfc.log日志图2:hadoop-hadoop-zkfc.log日志原因:

查看图1发现可能和sshfence有关,查阅资料才知道,active状态的namenode出现故障时,通过哪种方式切换standby状态的namenode是通过hdfs-site.xml文件中的dfs.ha.fencing.methods参数决定的。

解决方法:
本人的配置文件hdfs-site.xml:

		<!-- 配置隔离机制 -->
        <property>
            <name>dfs.ha.fencing.methods</name>
            <value>sshfence</value>
        </property>
        <!-- 使用隔离机制时需要ssh免登陆 -->
        <property>
            <name>dfs.ha.fencing.ssh.private-key-files</name>
            <value>/home/hadoop/.ssh/id_rsa</value>
        </property>

dfs.ha.fencing.ssh.private-key-files参数用来指定存放ssh免密登录到另一个节点的私钥的路径,此处设置的是hadoop用户下的私钥路径,所以切换到hadoop用户下启动集群就可以了,root用户下会报错。

补充:

  • hadoop提供了两种fenching实现,一种是sshfence,一种是shellfence
  • sshfence是指过ssh登陆目标Master节点上,使用命令fuser将进程杀死(通过tcp端口号定位进程pid,该方法比jps命令更准确)。
  • shellfence是指执行一个用户事先定义的shell命令(脚本)完成隔离。
  • hdfs-site.xml通过参数dfs.ha.fencing.methods来实现出现故障时通过哪种方式登录到另一个namenode上进行接管工作,这意味着dfs.ha.fencing.ssh.private-key-files参数用来指定存放ssh免密登录到另一个节点的私钥的路径。

在此感谢Troyong的文章!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值