IDEA上传 HDFS文件出错

错误如下:

org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /hdfsapi/test/c.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. 
at org.apache.hadoop.hdfs.server.blockmanagement.BlockManager.chooseTarget4NewBlock(BlockManager.java:1595)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:3287)
at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.addBlock(NameNodeRpcServer.java:677)

...

查看NameNode日志如下:
IDEA上传 HDFS文件出错_第1张图片

背景

本人使用阿里云服务器搭设了一个伪分布(Pseudo-Distributed Mode)集群,使用hdfs dfs -put yarn-site.xml /feng3命令上传文件,以及hadoop fs -mkdir /hui命令创建文件夹均正常,通过本地IDEA创建文件夹也成功,但是上传文件提示失败,出现上述问题。

分析

  1. jps命令查看如下图所示,所有的进程正常启动。
    IDEA上传 HDFS文件出错_第2张图片
  2. hdfs dfsadmin -report查看各节点是否正常,如图显示正常。

IDEA上传 HDFS文件出错_第3张图片
3. 查看hdfs元数据目录,确保NameNode和DataNode节点的VERSION文件中CLUSTR_ID等数据一致。
IDEA上传 HDFS文件出错_第4张图片

  1. 此时发现,上述三种情况都正常。据自己分析,此种情况主要有是因为IDEA(client)无法访问DataNode节点所致,因为可以创建文件夹,表示节点client可以访问NameNode。此种情况有可能是阿里云内外网IP地址的原因,本集群Hadoop的配置统一使用的是dfs.http.addressfs.defaultFS 的配置统一使用的是hostname (master),并在hosts文件下配置了master的内网IP。
    在这里插入图片描述
    由于默认情况下,NameNode返回给client的是DataNode节点的IP,由于要在外网访问,因此修改hdfs-site.xml 文件下dfs.client.use.datanode.hostname 属性,设置为true ,表示NameNode返回的是hostname (master),如下图所示。
    在这里插入图片描述

此时仍然无法上传文件,查看NameNode日志可得需要通过9866 端口与DataNode通信,因此需要开启阿里云服务器的9866端口。 最终解决了问题。
IDEA上传 HDFS文件出错_第5张图片

你可能感兴趣的:(Hadoop系列)