Distcp源的长度不匹配

时间:2017-01-09 07:18:32

标签: hadoop distcp

我在两个不同的 hadoop 集群之间执行 distcp 命令时遇到问题,

  

引起:java.io.IOException:长度不匹配   来源:hdfs:// ip1 / xxxxxxxxxx / xxxxx和   目标: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/ 

但似乎没有任何效果。

请解决任何问题。

3 个答案:

答案 0 :(得分:1)

我在完全相同版本的两个Hadoop集群之间遇到了与distcp相同的问题。对我来说,结果是由于其中一个源目录中的某些文件仍处于打开状态。一旦我为每个源目录分别运行distcp,我就能找到这种情况 - 除了带有打开文件的一个目录以外,它只适用于那些文件。当然,乍一看很难说清楚。

答案 1 :(得分:0)

通过将clusterToLocal从cluster1 one执行到本地linux fs并将copyFromLocal执行到cluster2来解决该问题。

答案 2 :(得分:-1)

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

    hdfs fsck hdfs://xxxxxxxxxxx
    
  2. 如果源文件未关闭,请使用此命令将其关闭:

    hdfs debug recoverLease -path hdfs://xxxxxxx
    
  3. hadoop distcp -bandwidth 15 -m 50 -pb hdfs://xxxxxx hdfs://xxxxxx