HDFS put出错问题解决:There are 0 datanode(s) running and no node(s) are excluded in this operation.

put命令上传文件出错:WARN hdfs.DFSClient: DataStreamer Exception org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /test/words.txt._COPYING_ could only be replicated to 0 nodes instead of minReplication (=1).  There are 0 datanode(s) running and no node(s) are excluded in this operation.

        在解决好hive的连接问题后,我开始尝试通过HDFS上传文件来为hive上传数据,但在上传时报出了上述的错误,没有DataNode节点,实际上节点都已经打开。在经过网络查询后,不少是说hadoop namenode -format格式化时格式化了多次,spaceID不一致造成的。

        先停止集群,删除hadoop.tmp.dir(core-site.xml)下的文件(这一步是否有用我并没有查证,如果仅是自己做实验,删删问题不大),格式化namenode,后重启。

        我在停止集群格式化namenode时,多次无法成功,翻阅书本后发现(包括在开启集群时进行格式化的经验),需要先开启三个节点上的journalnode后再进行格式化,这一步相当重要,就这一小步困扰了我将近两周。然后进行格式化(hdfs namenode -format)(格式化后如果怕其他机子上的文件与01机冲突,可选择scp将文件复制过去)。

        之后尝试上传文件,发现无法连接上0102机,原因是01、02机namenode掉线,开启namenode不久后三个机的datanode全部掉线,查阅后得知是$DATA_HOME(hadoop的hdfs-xite.xml中dfs.namenode.name.dir)下name/current/VERSION中clusterIDdata/current/VERSION中的clusterID不一致,这会导致DataNode掉线,需要将name的clusterID复制给data的,然后将上层的文件夹复制给其他的集群计算机,重启集群,这样DataNode掉线问题就解决了。

你可能感兴趣的:(hadoop,hdfs)