Использовать искру для копирования данных через кластер hadoop

У меня есть ситуация, когда мне нужно скопировать данные / файлы из PROD в UAT (кластеры hadoop). Для этого я использую 'distcp' сейчас. но это займет вечность. Так как distcp использует map-Reduction под капотом, есть ли способ использовать spark, чтобы ускорить процесс? Как мы можем установить механизм исполнения улья в 'TEZ' (заменить map-reduce), можем ли мы установить двигатель исполнения для запуска distcp? Или есть еще 'spark' способ скопировать данные между кластерами, которые могут даже не беспокоиться о distcp?

И вот мой второй вопрос (при условии, что мы можем установить distcp запускать механизм выполнения вместо map-Reduce, пожалуйста, не беспокойтесь, чтобы ответить на этот вопрос в противном случае):- Насколько я знаю, Spark работает быстрее, чем Map-Reduction, главным образом потому, что он хранит данные в памяти, которые могут потребоваться для обработки в нескольких случаи, когда он не должен загружать данные полностью с диска. Здесь мы копируем данные по кластерам, поэтому нет необходимости обрабатывать один файл (или блокировать или разбивать) более одного раза, так как каждый файл попадает в память, а затем отправляется по сети, копируется на целевой диск кластера. конец истории для этого файла. Тогда почему же Spark ускоряет процесс, если основная функция не используется?

2 ответа

Ваши узкие места при массовых межкластерных IO обычно

  1. пропускная способность между кластерами
  2. чтение полосы пропускания от исходного кластера
  3. запись пропускной способности в целевой кластер (и при 3-кратной репликации записи занимают диск и переключают пропускную способность)
  4. выделенное место для работы (т.е. количество исполнителей, задач)

Как правило, при загрузке на дальние расстояния ваша дальняя сеть является узким местом: вам не нужно столько рабочих, чтобы затопить сеть.

Есть известная история об операции distcp между двумя Yahoo! кластеры, которым удалось сделать именно это с частью магистрали: команда Hadoop ops рада, что distcp идет так быстро, в то время как команда network ops беспокоится о том, что их основные службы каким-то образом страдают из-за трафика между двумя сайтами. Я считаю, что этот инцидент является причиной того, что distcp теперь имеет -bandwidth вариант:)

Там, где могут быть ограничения в distcp, это, вероятно, связано с настройкой и выполнением задачи: решение о том, какие файлы копировать, принимается заранее, и при перепланировании работы не хватает (каких-либо?) Умений, если некоторые файлы копируются быстро, а другие выдаются.

Distcp просто создает список заранее и передает его специальным картографам distcp, каждый из которых читает свой список файлов и копирует его.

Кто-то может попытаться сделать искровую версию distcp; Это мог бы быть интересный проект, если бы кто-то хотел поработать над лучшим планированием, полагаясь на тот факт, что spark очень эффективен в распространении новой работы для существующих исполнителей: версия spark может выполнять работу динамически, а не перечислять все заранее. Действительно, он все еще может начать операцию копирования, перечисляя файлы для копирования, для более быстрого запуска. Даже в этом случае: пропускная способность между кластерами, как правило, будет проблемой.

Spark не предназначен для перемещения данных между кластерами Hadoop. Вы можете посмотреть на дополнительные картографы для вашего distcp работа с использованием "-m" вариант.

Другие вопросы по тегам