【发布时间】:2017-05-23 09:48:32
【问题描述】:
我在两个不同的 hadoop 集群之间执行 distcp 命令时遇到问题,
原因:java.io.IOException:长度不匹配 来源:hdfs://ip1/xxxxxxxxxx/xxxxxx 和 目标:hdfs://nameservice1/xxxxxx/.distcp.tmp.attempt_1483200922993_0056_m_000011_2
我尝试使用 -pb 和 -skipcrccheck:
hadoop distcp -pb -skipcrccheck -update hdfs://ip1/xxxxxxxxxx/xxxxx hdfs:///xxxxxxxxxxxx/
hadoop distcp -pb hdfs://ip1/xxxxxxxxxx/xxxxx hdfs:///xxxxxxxxxxxx/
hadoop distcp -skipcrccheck -update hdfs://ip1/xxxxxxxxxx/xxxxx hdfs:///xxxxxxxxxxxx/
但似乎没有任何效果。
请提供任何解决方案。
【问题讨论】:
-
集群的版本是否相同?我认为两个集群的版本不兼容。基于 Hadoop 权威指南 尝试:
If the two clusters are running incompatible versions of HDFS, then you can use the webhdfs protocol to distcp between them: % hadoop distcp webhdfs://namenode1:50070/foo webhdfs://namenode2:50070/foo -
版本(cdh5.8.2)相同,事件尝试使用 webhdfs 但仍然出现相同的错误。
-
它是否总是对所有内容都失败,或者有时对特定文件?它是在 2 个方向上失败还是只是从集群 1 到集群 2 失败?
-
如果有任何错误/损坏的文件,它会失败,是的,它可以在集群 1 到集群 2 的两个方向上失败,反之亦然。