我想在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,但由于上述异常,某些文件会失败。 任何人都有同样的问题,如何解决这个问题? 提前谢谢。
答案 0 :(得分:1)
HFTP使用datanode上的HTTP Web服务器来获取数据。检查此HTTP Web服务器是否正在处理所有数据节点。我得到了这个确切的错误,经过调试后发现由于某些损坏的jar文件,某些数据节点上的这个Web服务器没有启动。
启动datanode时会启动此Web服务器。您可以检查最初500行的datanode日志,看看是否正在启动网络服务器。
答案 1 :(得分:0)