1. 首页 > 知识 > 技术

hadoop2.4.1的HA主备切换失败问题的解决办法

当主namenode死掉后,备用namenode没有主动从standby切换到active!!!

解决步骤
在未成功切换的备用namenode上查看hadoop-hadoop-zkfc-weekend02.log日志,发现异常如下

第一种情况:

2019-04-22 00:09:32,465 WARN org.apache.hadoop.ha.SshFenceByTcpPort: PATH=$PATH:/sbin:/usr/sbin fuser -v -k -n tcp 53310 via ssh: bash: fuser: command not found
2019-04-22 00:09:32,465 WARN org.apache.hadoop.ha.NodeFencer: Fencing method org.apache.hadoop.ha.SshFenceByTcpPort(null) was unsuccessful.
2019-04-22 00:09:32,465 WARN org.apache.hadoop.ha.ActiveStandbyElector: Exception handling the winning of election
2019-04-22 00:09:34,552 WARN org.apache.hadoop.ha.FailoverController: Unable to gracefully make NameNode at server101.hadoop.com/192.168.1.101:53310 standby (unable to connect)
2019-04-22 00:09:34,592 WARN org.apache.hadoop.ha.SshFenceByTcpPort.jsch: Permanently added 'server101.hadoop.com' (RSA) to the list of known hosts.

第二种情况:

2019-04-22 08:33:20,507 INFO org.apache.hadoop.ha.ZKFailoverController: Should fence: NameNode at weekend01/192.168.43.96:9000
2019-04-22 08:33:21,510 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: weekend01/192.168.43.96:9000. Already tried 0 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=1, sleepTime=1000 MILLISECONDS)
2019-04-22 08:33:21,511 WARN org.apache.hadoop.ha.FailoverController: Unable to gracefully make NameNode at weekend01/192.168.43.96:9000 standby (unable to connect)
java.net.ConnectException: Call From weekend02/192.168.43.97 to weekend01:9000 failed on connection exception: java.net.ConnectException: Connection refused; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused
2019-04-22 08:33:21,516 INFO org.apache.hadoop.ha.NodeFencer: ====== Beginning Service Fencing Process... ======
2019-04-22 08:33:21,516 INFO org.apache.hadoop.ha.NodeFencer: Trying method 1/2: org.apache.hadoop.ha.SshFenceByTcpPort(null)
2019-04-22 08:33:21,554 WARN org.apache.hadoop.ha.SshFenceByTcpPort: Unable to create SSH session
com.jcraft.jsch.JSchException: java.io.FileNotFoundException: /home/hadoop/.ssh/id_rsa (No such file or directory)

查看hdfs-site.xml配置文件

     <property>
      <name>dfs.ha.fencing.methods</name>
      <value>
       sshfence
       shell(/bin/true)
      </value>
     </property>

hdfs-site.xml通过参数dfs.ha.fencing.methods来实现,在出现故障时通过哪种方式登录到另一个namenode上进行接管工作。

dfs.ha.fencing.methods参数

系统在任何时候只有一个namenode节点处于active状态。
在主备切换的时候,standby namenode会变成active状态,原来的active namenode就不能再处于active状态了,
否则两个namenode同时处于active状态会有问题。
所以在failover的时候要设置防止2个namenode都处于active状态的方法,可以是Java类或者脚本。
fencing的方法目前有两种,sshfence和shell
sshfence方法是指通过ssh登陆到active namenode节点杀掉namenode进程,所以你需要设置ssh无密码登陆,还要保证有杀掉namenode进程的权限。


解决方法:

根据配置参数的方法可能有两种情况

一、首先查看是否设置了ssh无密码登陆

可直接运行ssh观察是否可无密码登陆到主namenode的主机

[hadoop@weekend01 ~]$ ssh weekend02
Last login: Mon Apr 22 09:32:22 2019 from 192.168.43.5
[hadoop@weekend02 ~]$

可成功表示已设置ssh无密码登陆,若需输入密码测表示未设置,需进行配置。可参考 配置ssh无密码登陆

二、 查找fuser

[hadoop@weekend02 ~]# yum provides "*/fuser"
Loaded plugins: fastestmirror
Determining fastest mirrors
* epel: mirrors.tuna.tsinghua.edu.cn
psmisc-22.20-9.el7.x86_64 : Utilities for managing processes on your system
Repo        : base
Matched from:
Filename    : /usr/sbin/fuser
# 在namenode主、备节点上安装fuser(datanode节点不用安装)
[hadoop@weekend02 ~]# yum -y install psmisc    (yum install psmisc)
[hadoop@weekend01 ~]# yum -y install psmisc    (yum install psmisc)
安装完成后,再次测试,namenode自动切换成功!!!


本文由一叶发布,不代表一叶立场,转载联系作者并注明出处:https://yiyeo.com/jishu/12.html

加载中~

联系我们

在线咨询:点击这里给我发消息

微信号:

工作日:10:30-15:30,节假日休息