hadoop distcp故障转移hftp协议

时间:2013-10-15 03:39:49

标签: hadoop connection hadoop2 distcp

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

但由于来自jobtracker UI的一些http connection error,作业失败了

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,但由于上述异常,某些文件会失败。 任何人都有同样的问题,如何解决这个问题? 提前谢谢。

2 个答案:

答案 0 :(得分:1)

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

启动datanode时会启动此Web服务器。您可以检查最初500行的datanode日志,看看是否正在启动网络服务器。

答案 1 :(得分:0)

  1. 您的Hadoop集群cluster1和cluster2是否运行相同版本的Hadoop?什么是详细发布版本?
  2. 您在Hadoop上启用的任何安全设置?
  3. HTTP返回代码503服务器暂时不可用,您的副本是否有任何网络问题?