1. 查看zkfc进程是否挂掉
查看之前的文章:记一次flink on hadoop with per-job 报错排查 ,重新回顾一下HDFS的高可用:
主备切换的逻辑:
active节点通过zkfc将状态写到zk中,standBy对此状态感兴趣添加监听,当active宕机,zkfc立即通知standy转换为active。
当zkfc挂掉之后,这些namenode节点状态则不能维护和相互同步,就有可能都为standy。
重启zkfc之后namenode正常
2. 初始化zookeeper来重新竞选
namenode的高可用是zk维护实现的,可以尝试初始化namenode在zookeeper的元数据。
//任选一台StandBy状态的节点做zk的初始化。
hdfs zkfc -formatZK
//sbin目录下重启集群
start-dfs.sh