【问题标题】:Getting error while copying the file from linux Local file system to HDFS将文件从 linux 本地文件系统复制到 HDFS 时出错
【发布时间】:2014-08-29 02:56:03
【问题描述】:

当我启动它的单节点集群时,我没有遇到任何问题,我还检查了所有守护进程的日志。

但是,当我将数据从本地 linux 文件系统复制到 HDFS 文件系统时,它会抛出一个异常说; org.apache.hadoop.hdfs.DFSClient:DataStreamer 异常:java.lang.IllegalArgumentException:不包含有效的主机:端口权限:0:0:0:0:0:0:0:1:50010

请查找附件日志;

 2014-07-08 15:56:28,342 WARN org.apache.hadoop.hdfs.DFSClient: DataStreamer Exception: java.lang.IllegalArgumentException: Does not contain a valid host:port authority: 0:0:0:0:0:0:0:1:50010
    at org.apache.hadoop.net.NetUtils.createSocketAddr(NetUtils.java:164)
    at org.apache.hadoop.net.NetUtils.createSocketAddr(NetUtils.java:130)
    at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.createBlockOutputStream(DFSClient.java:3629)
    at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.nextBlockOutputStream(DFSClient.java:3588)
    at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.access$2600(DFSClient.java:2783)
    at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$DataStreamer.run(DFSClient.java:3023)

2014-07-08 15:56:28,342 WARN org.apache.hadoop.hdfs.DFSClient: Error Recovery for blk_3686864267613252482_3024 bad datanode[0] nodes == null
2014-07-08 15:56:28,342 WARN org.apache.hadoop.hdfs.DFSClient: Could not get block locations. Source file "/tmp/hadoop-user1/mapred/system/jobtracker.info" - Aborting...
2014-07-08 15:56:28,342 WARN org.apache.hadoop.mapred.JobTracker: Writing to file hdfs://localhost:9000/tmp/hadoop-user1/mapred/system/jobtracker.info failed!
2014-07-08 15:56:28,343 WARN org.apache.hadoop.mapred.JobTracker: FileSystem is not ready yet!
2014-07-08 15:56:28,351 WARN org.apache.hadoop.mapred.JobTracker: Failed to initialize recovery manager. 
java.io.IOException: Could not get block locations. Source file "/tmp/hadoop-user1/mapred/system/jobtracker.info" - Aborting...
    at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.processDatanodeError(DFSClient.java:3270)
    at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.access$2200(DFSClient.java:2783)
    at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$DataStreamer.run(DFSClient.java:2987)
2014-07-08 15:56:29,352 WARN org.apache.hadoop.mapred.JobTracker: Retrying...

【问题讨论】:

  • 来自 Rajn(没有足够的代表):你能运行命令 hadoop dfsadmin -report 并将输出粘贴到这里吗?
  • 配置容量:236225449984 (220 GB) 当前容量:213673410560 (199 GB) DFS 剩余:213673381888 (199 GB) DFS Used:28672 (28 KB) DFS Used%:0% 在复制块下: 0 具有损坏副本的块:0 丢失块:0 ---------------------------------------- ---------- 可用数据节点:1(总共 1 个,0 个死节点)名称:0:0:0:0:0:0:0:1:50010 退役状态:正常配置容量:236225449984(220 GB) 已用 DFS:28672 (28 KB) 已用非 DFS:22552039424 (21 GB) 剩余 DFS:213673381888(199 GB) 已用 DFS%:0% 剩余 DFS%:90.45% 最后联系:7 月 9 日星期三 10:55:07 IST 2014

标签: linux hadoop hdfs


【解决方案1】:

检查您的 mapred-site.xml。它应该有有效的跟踪器条目。当然主机和端口值应该根据您的系统进行更改。

<property>
  <name>mapred.job.tracker</name>
  <value>host:port</value>
</property>

【讨论】:

  • 因为 Özgür Eroğlu 的回答将解决您的问题。使用您系统的 IP 地址或环回地址。
  • 这是 mapred-site.xml 中的条目: mapred.job.trackerlocalhost:9001 我的集群设置是在 Linux (Ubuntu) 机器上,我正在使用 Windows 中的 putty 来访问它。我应该提到 linux 机器的 IP 地址来代替 localhost 吗?
  • 将主机参数更改为您的外部 IP 只是启用对 jobtracker 的远程访问,但是由于您正在运行单节点设置,因此在这里并不那么重要,localhost 应该可以完成这项工作。问题可能是您将 /tmp 用于 dfs.data.dir ,在重新启动后会被清除,因此 hdfs 无法恢复。尝试将数据目录设置为其他内容,重新格式化并尝试重新启动。
猜你喜欢
  • 2012-11-21
  • 1970-01-01
  • 2013-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多