2017-01-09 7 views
2

я столкнулся вопросом во время выполнения distcp команды между двумя различными Hadoop кластеров,Distcp несовпадение по длине источника

Вызванными: java.io.IOException: несовпадение длиной источника: HDFS : // IP1/XXXXXXXXXX/ххххх и цель: HDFS: //nameservice1/xxxxxx/.distcp.tmp.attempt_1483200922993_0056_m_000011_2

Я попытался с помощью и -skipcrccheck-PB:

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/ 

, но ничего не работает.

Любые решения, пожалуйста.

+0

варианты кластеров одинаковы? Я думаю, что существует несовместимость между версиями двух кластеров. На основе _Hadoop Definitive Guide_ try: 'Если в двух кластерах запущены несовместимые версии HDFS, вы можете использовать протокол webhdfs , чтобы разделить между ними: % hadoop distcp webhdfs: // namenode1: 50070/foo webhdfs: // namenode2: 50070/foo' – Thomas8

+0

Версии (cdh5.8.2) одинаковы, событие было выполнено с помощью webhdfs, но эта ошибка повторяется. – Aditya

+0

Неужели это всегда терпит неудачу для всего, или иногда для определенных файлов? И не так ли это происходит в двух направлениях или только от кластера 1 до кластера 2? –

ответ

1

Я столкнулся с той же проблемой с distcp между двумя кластерами Hadoop точно такой же версии. Для меня это оказалось связано с тем, что некоторые файлы в одном из исходных каталогов все еще открыты. Как только я запускал distcp для каждого исходного каталога отдельно, я смог найти, что это так - он работал отлично для всех, кроме одного каталога с открытыми файлами и только для этих файлов. Конечно, сначала сложно сказать краснеть.

0

Проблема была решена путем выполнения copyToLocal с одного кластера1 на локальный linux fs и copyFromLocal на cluster2.

Смежные вопросы