文章目录

  • 异常情况
  • 第一种情况解决方法
  • 第二种情况解决方法


异常情况

由于我在写这篇博客的时候已经解决了这个问题,因此我只能用别人出异常的情况来表述了,我的情况和他一样,也是只有一个Availability,但是却显示Replication有3个.

kill hadoop任务 hadoop kill application_kill hadoop任务

第一种情况解决方法

第一种情况原文来源 如图,显示的副本数为3,但是实际可用的只有一台机器,

这里可以打开hadoop目录下的data文件,然后一直向下找

kill hadoop任务 hadoop kill application_解决方法_02


这里你应该去查看Availability里面没有显示出来的主机的这个目录里是否有文件.

我查看了一下,由于我是Hadoop0117这台主机没有出现在Availability里面,因此我查看了这台主机的data文件,果然是没有的,那么出现这种情况的原因,应该是由于你的拷贝hadoop目录的时候,本身就有了一份data和logs目录,而你拷贝之后启动hdfs的时候并没有先删除这份,那么里面存储的NameNodeuuid其对应的NameNode是先前主机的uuid,也就是VERSION不一致导致的他匹配的还是先前的那个NameNode管理的集群,因此这个新的集群他就无法进入了,解决方法很简单

1:关闭hadoop集群

[yoshino@hadoop0115 hadoop-3.1.3]$ sbin/

2:删除对应的data与logs文件

rm -rf logs/
rm -rf data/

kill hadoop任务 hadoop kill application_hdfs_03


3:再次打开hdfs

[yoshino@hadoop0115 hadoop-3.1.3]$ sbin/

这样就能解决了

kill hadoop任务 hadoop kill application_kill hadoop任务_04

第二种情况解决方法

这种情况我们可以先点击HDFS网页的Datanodes

kill hadoop任务 hadoop kill application_解决方法_05


正常情况里面应该是你配置了多少主机这里就有多少台DataNode

kill hadoop任务 hadoop kill application_解决方法_06


然后你在Availability不存在的主机对应的HttpAddress

kill hadoop任务 hadoop kill application_hadoop_07


如果你发现他进不去,而其他两个Availability里面有的主机是可以进去的,那么就说明你对应的这台主机的防火墙没关.

kill hadoop任务 hadoop kill application_hdfs_08


没错,我就是这种情况

所以你只需要关闭防火墙即可

查看防火墙状态

systemctl status firewalld.service

关闭防火墙

sudo systemctl stop firewalld

我就是靠这种方法解决的
至此,就是解决出现hadoop 3.x Replication与Availability不一致问题的方法