HDFS使用appendToFile报错WARN hdfs.DFSClient: DataStreamer Exception java.io.IOException: Failed

报错提示说原文件已经被视为bad datanode了,具体不知道怎么被视作的。参考hadoop错误解决方案:

先看看文件是否有写权限。

往空文件中追加就相当于直接写文件,所以能追加进去,而往有内容的文件中追加不进去是因为datanode节点数不够三个,其他虚拟机没有开无法进行文件备份。

解决方法1:

至少打开三个节点。

解决方法2:
修改hdfs-site.xml文件,添加或者修改如下两项:
< property>
< name>
dfs.client.block.write.replace-datanode-on-failure.enable
</ name>
< value>true</ value>
</ property>
< property>
< name>
dfs.client.block.write.replace-datanode-on-failure.policy
</ name>
< value>never</ value>
</ property>
添加或修改完成后,重试即可。

解决方法3:

在客户端的代码里面加入:

     conf = new Configuration();
    
 
    conf.set("dfs.client.block.write.replace-datanode-on-failure.policy",
                "NEVER"
        ); 

conf.set("dfs.client.block.write.replace-datanode-on-failure.enable",
                "true"
        ); 

猜你喜欢

转载自blog.csdn.net/master_hunter/article/details/108864159