我在两个不同的hadoop集群之间执行distcp命令时遇到问题,
原因:java.io.ioexception:长度不匹配source:hdfs://ip1//xx和target:hdfs用法:/nameservice1//.distcp.tmp.attempt\u 1483200922993\u 0056\u m\u 000011\u 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/
但似乎什么都没用。
有什么解决办法吗。
3条答案
按热度按时间ff29svar1#
通过执行copytolocal from cluster1 one to local linux fs和copyfromlocal to cluster2解决了这个问题。
ekqde3dh2#
检查源文件统计信息,使用命令:
如果源文件未关闭,请使用以下命令将其关闭:
sbdsn5lh3#
我在两个版本完全相同的hadoop集群之间使用distcp时遇到了同样的问题。对我来说,这是由于一些文件在一个源目录仍然是开放的。当我分别为每个源目录运行distcp时,我发现情况就是这样,除了一个目录中有打开的文件外,其他所有目录都可以正常工作,而且只对那些文件有效。乍一看当然很难说。