distcp源的长度不匹配

ozxc1zmp  于 2021-05-29  发布在  Hadoop
关注(0)|答案(3)|浏览(429)

我在两个不同的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/

但似乎什么都没用。
有什么解决办法吗。

ff29svar

ff29svar1#

通过执行copytolocal from cluster1 one to local linux fs和copyfromlocal to cluster2解决了这个问题。

ekqde3dh

ekqde3dh2#

检查源文件统计信息,使用命令:

hdfs fsck hdfs://xxxxxxxxxxx

如果源文件未关闭,请使用以下命令将其关闭:

hdfs debug recoverLease -path hdfs://xxxxxxx
``` `hadoop distcp -bandwidth 15 -m 50 -pb hdfs:// hdfs://` 
sbdsn5lh

sbdsn5lh3#

我在两个版本完全相同的hadoop集群之间使用distcp时遇到了同样的问题。对我来说,这是由于一些文件在一个源目录仍然是开放的。当我分别为每个源目录运行distcp时,我发现情况就是这样,除了一个目录中有打开的文件外,其他所有目录都可以正常工作,而且只对那些文件有效。乍一看当然很难说。

相关问题