1

我想通过 hftp 协议使用 distcp 从 cdh3 和 cdh4 复制文件。命令如下: hadoop distcp hftp://cluster1:50070/folder1 hdfs://cluster2/folder2

但是由于http connection errorjobtracker UI中的一些原因,工作失败了

INFO org.apache.hadoop.tools.DistCp: FAIL test1.dat : java.io.IOException: HTTP_OK expected, received 503 
    *at org.apache.hadoop.hdfs.HftpFileSystem$RangeHeaderUrlOpener.connect(HftpFileSystem.java:376)
at org.apache.hadoop.hdfs.ByteRangeInputStream.openInputStream(ByteRangeInputStream.java:119)
at org.apache.hadoop.hdfs.ByteRangeInputStream.getInputStream(ByteRangeInputStream.java:103)
at org.apache.hadoop.hdfs.ByteRangeInputStream.read(ByteRangeInputStream.java:187)
at java.io.DataInputStream.read(DataInputStream.java:83)
at org.apache.hadoop.tools.DistCp$CopyFilesMapper.copy(DistCp.java:424)
at org.apache.hadoop.tools.DistCp$CopyFilesMapper.map(DistCp.java:547)
at org.apache.hadoop.tools.DistCp$CopyFilesMapper.map(DistCp.java:314)
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:50)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:417)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:332)
at org.apache.hadoop.mapred.Child$4.run(Child.java:268)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1408)
at org.apache.hadoop.mapred.Child.main(Child.java:262)*

folder1 中的大多数文件将被复制到 folder2,但某些文件由于上述异常而失败。任何人都和我有同样的问题,以及如何解决这个问题?提前致谢。

4

2 回答 2

1

HFTP 使用数据节点上的 HTTP Web 服务器来获取数据。检查此 HTTP Web 服务器是否在所有数据节点上工作。我得到了这个确切的错误,调试后我发现某些数据节点上的这个 Web 服务器由于一些损坏的 jar 文件而没有启动。

当你启动一个数据节点时,这个网络服务器就会启动。您可以检查最初的 500 行数据节点日志以查看该网络服务器是否正在启动。

于 2013-11-06T18:36:19.627 回答
0
  1. 您的 Hadoop 集群 cluster1 和 cluster2 是否运行相同版本的 Hadoop?详细发布版本是多少?
  2. 您在 Hadoop 上启用的任何安全设置?
  3. HTTP 返回码 503 是服务器暂时不可用,请问您的复制过程中是否发生了网络问题?
于 2013-10-16T00:02:08.010 回答