Hadoop:文件...只能复制到 0 个节点,而不是 1 个

Ale*_*der 0 hadoop infiniband

我正在尝试在 8 节点 IB (OFED-1.5.3-4.0.42) 集群上部署 Hadoop-RDMA,并遇到以下问题(又名文件...只能复制到 0 个节点,而不是 1 个节点):

\n\n
\nfrolo@A11:~/hadoop-rdma-0.9.8> ./bin/hadoop dfs -copyFromLocal ../pg132.txt /user/frolo/input/pg132.txt\n警告: $HADOOP_HOME 已弃用。\n\ n14/02/05 19:06:30 警告 hdfs.DFSClient: DataStreamer 异常: java.lang.reflect.UndeclaredThrowableException\n 在 com.sun.proxy.$Proxy1.addBlock(未知来源)\n 在 sun.reflect.NativeMethodAccessorImpl .invoke0(本机方法)\n 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)\n 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n 在 java.lang.reflect.Method .invoke(Method.java:606)\n 在 org.apache.hadoop.io.retry.RetryInvocalHandler.invokeMethod(未知来源)\n 在 org.apache.hadoop.io.retry.RetryInvocalHandler.invoke(未知来源)\ n 在 com.sun.proxy.$Proxy1.addBlock(未知来源)\n 在 org.apache.hadoop.hdfs.From.Code(未知来源)\n 在 org.apache.hadoop.hdfs.From.F(未知来源)源)\n 位于 org.apache.hadoop.hdfs.From.F(未知源)\n 位于 org.apache.hadoop.hdfs.The.run(未知源)\n由:org.apache.hadoop.ipc 引起。 RemoteException:java.io.IOException:文件/user/frolo/input/pg132.txt只能复制到0个节点,而不是org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(未知)的1\n源)\n 在 org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(未知源)\n 在 sun.reflect.GeneratedMethodAccessor6.invoke(未知源)\n 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl .java:43)\n 在 java.lang.reflect.Method.invoke(Method.java:606)\n 在 org.apache.hadoop.ipc.RPC$Server.call(未知来源)\n 在 org.apache .hadoop.ipc.rdma.madness.Code(未知来源)\n 位于 org.apache.hadoop.ipc.rdma.madness.run(未知来源)\n 位于 java.security.AccessController.doPrivileged(本机方法)\n在 javax.security.auth.Subject.doAs(Subject.java:415)\n 在 org.apache.hadoop.security.UserGroupInformation.doAs(未知来源)\n 在 org.apache.hadoop.ipc.rdma.be。运行(未知来源)\n 在 org.apache.hadoop.ipc.rdma.RDMAClient.Code(未知来源)\n 在 org.apache.hadoop.ipc.rdma.RDMAClient.call(未知来源)\n 在 org. apache.hadoop.ipc.Tempest.invoke(来源未知)\n ... 12 个以上`\n\n14/02/05 19:06:30 警告 hdfs.DFSClient:错误恢复 null bad datanode[0] 节点 = = null\n14/02/05 19:06:30 警告 hdfs.DFSClient:无法获取块位置。源文件“/user/frolo/input/pg132.txt” - 正在中止...\n14/02/05 19:06:30 INFO hdfs.DFSClient: isClosed 中的异常\n
\n\n

当我开始从本地文件系统复制到 HDFS 时,数据似乎没有传输到 DataNode。我测试了 DataNode 的可用性:

\n\n
\nfrolo@A11:~/hadoop-rdma-0.9.8> ./bin/hadoop dfsadmin -report\n警告: $HADOOP_HOME 已弃用。\n\n配置的容量: 0 (0 KB)\n当前容量: 0 (0 KB) )\n剩余 DFS: 0 (0 KB)\n已使用 DFS: 0 (0 KB)\n已使用 DFS%: \xef\xbf\xbd%\n复制块下: 0\n副本损坏的块: 0\n丢失块: 0` \n\n---------------------------------------------- ---\n可用数据节点: 0 (总共 4 个,4 个已失效)`\n\n`名称:10.10.1.13:50010\n停用状态:正常\n配置容量:0 (0 KB)\n使用的 DFS:0 (0 KB) )\n未使用 DFS: 0 (0 KB)\nDFS 剩余: 0(0 KB)\nDFS 已使用%: 100%\nDFS 剩余%: 0%\n最后联系: 星期三 2 月 5 日 19:02:54 MSK 2014\n \n\n名称: 10.10.1.14:50010\n退役状态: 正常\n配置容量: 0 (0 KB)\n已使用 DFS: 0 (0 KB)\n未使用 DFS: 0 (0 KB)\n剩余 DFS: 0(0 KB)\nDFS 已使用%: 100%\nDFS 剩余%: 0%\n最后一次联系: 2 月 5 日星期三 19:02:54 MSK 2014\n\n\n名称: 10.10.1.16:50010\n停用状态: 正常\n配置的容量: 0 (0 KB)\n已使用 DFS: 0 (0 KB)\n未使用 DFS: 0 (0 KB)\n剩余 DFS: 0(0 KB)\n已使用 DFS%: 100%\n剩余 DFS%: 0%\n最后联系人: 2 月 5 日星期三 19:02:54 MSK 2014\n\n\n名称: 10.10.1.11:50010\n停用状态:正常\n配置的容量: 0 (0 KB)\n使用的 DFS:0 (0 KB)\n非 DFS已使用: 0 (0 KB)\nDFS 剩余: 0(0 KB)\nDFS 已使用%: 100%\nDFS 剩余%: 0%\n最后联系: 2 月 5 日星期三 19:02:55 MSK 2014\n
\n\n

并尝试在 HDFS 文件系统中 mkdir ,结果成功。重新启动 Hadoop 守护进程并没有产生任何积极效果。

\n\n

你能帮我解决这个问题吗?谢谢。

\n\n

最好,\n 亚历克斯

\n

Ale*_*der 5

我找到了我的问题。该问题与已设置为 NFS 分区的 hadoop.tmp.dir 的配置有关。默认情况下,它配置为 /tmp,即本地文件系统。从 core-site.xml 中删除 hadoop.tmp.dir 后,问题已解决。