HDFS DataNode问题-_COPYING_ could only be replicated to 0 nodes instead of minReplication (=1). There
阅读原文时间:2021年04月21日阅读:1

OS:Ubuntu 12.04

Hadoop:Hadoop-2.7.1自己编译版本

问题:文件不能拷贝到HDFS 的问题,也就是HDFS的DataNode没有正常加载。

root@bigdatatest-1:~/data_test/hadoop-2.7.0# bin/hadoop fs -copyFromLocal README.txt input15/07/18 15:17:31 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable15/07/18 15:17:33 WARN hdfs.DFSClient: DataStreamer Exceptionorg.apache.hadoop.ipc.RemoteException(java.io.IOException): File /user/root/input._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.at org.apache.hadoop.hdfs.server.blockmanagement.BlockManager.chooseTarget4NewBlock(BlockManager.java:1550)at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:3067)at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.addBlock(NameNodeRpcServer.java:722)at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.addBlock(ClientNamenodeProtocolServerSideTranslatorPB.java:492)at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java)at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:616)at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:969)at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2049)at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2045)at java.security.AccessController.doPrivileged(Native Method)at javax.security.auth.Subject.doAs(Subject.java:415)at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1657)at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2043)at org.apache.hadoop.ipc.Client.call(Client.java:1476)at org.apache.hadoop.ipc.Client.call(Client.java:1407)at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:229)at com.sun.proxy.$Proxy9.addBlock(Unknown Source)at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.addBlock(ClientNamenodeProtocolTranslatorPB.java:418)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:606)at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:187)at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:102)at com.sun.proxy.$Proxy10.addBlock(Unknown Source)at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.locateFollowingBlock(DFSOutputStream.java:1430)at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.nextBlockOutputStream(DFSOutputStream.java:1226)at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.run(DFSOutputStream.java:449)copyFromLocal: File /user/root/input._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.

解决方法

1)关闭Hadoop

bin/stop-all.sh

2) 关闭防火墙 [1]

sudo ufw disable

3) 检查是否注释掉所有DataNode节点/etc/hosts中的127.0.0.1和IPv6等配置,细节如下:

#127.0.1.1 bigdatatest-x.localdomain bigdatatest-x
#127.0.0.1 localhost
 # The following lines are desirable for IPv6 capable hosts
 #::1 ip6-localhost ip6-loopback
 #fe00::0 ip6-localnet
 #ff00::0 ip6-mcastprefix
 #ff02::1 ip6-allnodes
 #ff02::2 ip6-allrouters
 #ff02::3 ip6-allhosts

 10.0.xx.xx  bigdatatest-1
 10.0.xx.xx  bigdatatest-2

4)检查${Hadoop_Home}/etc/hadoop下的配置文件

特别是slaves、core-sites.xml中master设置、yarn-site.xml中yarn.resourcemanager.hostname的设置

5)重启Hadoop HDFS,重新部署hadoop到所有的master节点和slaves节点

bin/start-dfs.sh

如果还没有解决,HDFS上没有重要数据,仅仅用于测试目的的话,可以考虑最原始的办法,删除所有DataNode存放DFS的目录,重新初始化HDFS。

如"/data/hadoop-2.7.0"

#for each DataNode(Slaves) 

cd /data/hadoop-2.7.0"

rm -rf dfs

#in NameNode

/bin/hadoop name -format.

/sbin/start-dfs.sh 

[1] Hadoop异常 hdfs.DFSClient: DataStreamer Exception: org.apache.hadoop.ipc.RemoteException
, http://blog.csdn.net/jokes000/article/details/7707398

[2]Ubuntu12.04下hadoop-2.7.0编译-配置, http://blog.csdn.net/liliang199/article/details/46892331