【发布时间】:2014-09-14 01:04:37
【问题描述】:
我在尝试将一些文件添加到 hdfs 时,在我的单节点 Hadoop 安装中遇到了一个著名的“只能复制到 0 个节点,而不是 1 个节点”错误:
$ hdfs dfs -mkdir -p /grep/in
$ hdfs dfs -put /hadoop_install_location/etc/hadoop/* /grep/in/
第一个命令运行正常,第二个产生异常:
at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.run(DFSOutputStream.java:525)
put: File /grep/in/yarn-site.xml._COPYING_ could only be replicated to 0 nodes instead of minReplication (=1). There are 1 datanode(s) running and no node(s) are excluded in this operation.
这个异常只能在namenode的日志中找到。在 datanode 日志中,运行该命令时没有异常。
我的设置有什么问题?我只是按照本教程中的步骤进行操作:http://elephantscale.com/hadoop2_handbook/Hadoop2_Single_Node.html。
我听说我需要关闭 IPv6,但我没有这样做,这重要吗? 另外,当我调用 stop-dfs.sh 时,datanode 日志中会打印一个异常:
DataNode:offerService java.io.IOException 中的 IOException:失败 本地异常:java.io.EOFException;主机详细信息:本地主机是: “debian/127.0.1.1”;目的主机是:“localhost”:8020;
但是即使我不运行 ny put 命令也会发生这种情况,这种情况只会在我每次关闭 dfs 时发生。
Namenode webUI 说:
配置容量:1.87 GB DFS 使用:28 KB 非 DFS 使用:1.65 GB DFS 剩余:230.8 MB DFS 已用百分比:0% DFS 剩余百分比:12.04% 块池 Used: 28 KB Block Pool Used%: 0% DataNodes usages% (Min/Median/Max/stdDev): 0.00% / 0.00% / 0.00% / 0.00% 活动节点 1 (退役:0)死节点 0(退役:0)
etc/hadoop/slaves 只有 localhost 行,
/etc/hosts 有 127.0.0.1 localhost 和 127.0.1.1 debian 行。
我该如何解决?你能告诉我我还能检查什么以及如何检查吗?
【问题讨论】:
-
您的数据节点是否列在活动节点中?
-
hdfs dfsadmin -report 说它是实时列表
-
有一个过程,jps 说。并且权限没有问题 - 一切都以 root 身份完成。
-
尝试从 etc/hosts 中删除 127.0.1.1 对应的条目