解决方法: 方法1:(结果不起作用) 我通过Shell命令方式,hadoop/bin/hdfs haadmin -failover --forceactive hadoop2 hadoop1(注意,这种方式本来是在手动故障恢复中进行强制切换NameNode的做法) 返回结果,不支持,并且诚恳的提示,这种方式是在手动故障转移的情况下,该命令才会起作用 方法2:(奏效) 我使用JPS检查了一下ZooKeeper集群的状态,发现没有任何征兆的失效了两个,原来是ZK的原因,于是重新启动ZK集群 然后重新启动ZKFailoverController(DFSZKFailoverController):没有这个角色存在,自然不会自动切换NameNode了
得到的教训,虽然NameNode通过HA机制,已经比Hadoop1可靠了,但是ZK集群一定要保证数量,我仅仅设置了三个节点的ZK集群,而ZK集群的可靠要保证:活动的ZK节点数量>(ZK节点总数-1)/2.所以,多多的设置ZK集群的节点才是王道
|