对于刚刚学习大数据的同学来说,总会遇到各种各样的问题,并且网上的回答也是模模糊糊,看起来头痛不已,不过学习本来就是解决各种问题的过程,希望小伙伴们互相共勉,加油吧。
以下是我在用java程序向Hadoop的HDFS写文件的时候遇到的异常:
org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /testing/file01.txt could only be replicated to 0 nodes instead of minReplication (=1). There are 1 datanode(s) running and 1 node(s) are excluded in this operation.
两个可能的原因给大家参考:
- DataNode启动不正常
在虚拟机中输入hadoop dfsadmin -report查看DataNode状态。
如果容量都为0可重新格式化hdfs,重启DataNode试试。 - 虚拟机的DataNode防火墙没开
通常我们在最初设置环境的时候会设置50070,但是DataNode是通过50010端口提供服务的,在虚拟机内部通过hdfs shell操作一切都没问题,但是通过宿主机访问就会出问题。
回到虚拟机,输入:
sudo firewall-cmd --zone=public --add-port=50010/tcp --permanent
sudo firewall-cmd --reload
即可解决问题。