异常情况
由于我在写这篇博客的时候已经解决了这个问题,因此我只能用别人出异常的情况来表述了,我的情况和他一样,也是只有一个Availability,但是却显示Replication有3个.
第一种情况解决方法
如图,显示的副本数为3,但是实际可用的只有一台机器,
这里可以打开hadoop目录下的data文件,然后一直向下找
这里你应该去查看Availability里面没有显示出来的主机的这个目录里是否有文件.
我查看了一下,由于我是Hadoop0117这台主机没有出现在Availability里面,因此我查看了这台主机的data文件,果然是没有的,那么出现这种情况的原因,应该是由于你的拷贝hadoop目录的时候,本身就有了一份data和logs目录,而你拷贝之后启动hdfs的时候并没有先删除这份,那么里面存储的NameNodeuuid其对应的NameNode是先前主机的uuid,也就是VERSION不一致导致的他匹配的还是先前的那个NameNode管理的集群,因此这个新的集群他就无法进入了,解决方法很简单
1:关闭hadoop集群
[yoshino@hadoop0115 hadoop-3.1.3]$ sbin/stop-dfs.sh
2:删除对应的data与logs文件
rm -rf logs/ rm -rf data/
3:再次打开hdfs
[yoshino@hadoop0115 hadoop-3.1.3]$ sbin/start-dfs.sh
这样就能解决了
第二种情况解决方法
这种情况我们可以先点击HDFS网页的Datanodes
正常情况里面应该是你配置了多少主机这里就有多少台DataNode
然后你在Availability不存在的主机对应的HttpAddress
如果你发现他进不去,而其他两个Availability里面有的主机是可以进去的,那么就说明你对应的这台主机的防火墙没关.
没错,我就是这种情况
所以你只需要关闭防火墙即可
查看防火墙状态
systemctl status firewalld.service
关闭防火墙
sudo systemctl stop firewalld
我就是靠这种方法解决的
至此,就是解决出现hadoop 3.x Replication与Availability不一致问题的方法