我想通过hftp协议(protocol)使用distcp从cdh3和cdh4复制文件。
该命令类似于:hadoop distcp hftp://cluster1:50070/folder1 hdfs://cluster2/folder2
但是由于jobtracker用户界面中的一些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)*
文件夹1中的大多数文件将被复制到文件夹2中,除了某些文件由于上述异常而失败。
有人遇到我同样的问题,该如何解决?
提前致谢。
最佳答案
HFTP在数据节点上使用HTTP Web服务器来获取数据。检查此HTTP Web服务器是否在所有数据节点上正常工作。我得到了这个确切的错误,调试之后,我发现由于某些jar文件损坏,该Web服务器在某些数据节点上没有启动。
启动数据节点时,将启动此Web服务器。您可以检查datanode日志的前500行,以查看Web服务器是否正在启动。