2013-07-24 4 views
0

Я выполняю несколько скриптов PIG: скрипт1, script2, script3, script4. В этом я скрипт1 выполняется независимо, а script2,3,4 выполняется параллельно после запуска скриптов. Я даю входной файл размером 7-8 ГБ. Поэтому после выполнения скрипта1 я наблюдаю, что вместо параллельного выполнения скрипта 2,3,4 выполняется только скрипт2, поскольку он потребляет 33-35 карточек. Другие остаются в одинаковой очереди (значит, скрипт3,4 не получает распределение карт). Из-за этого слишком много времени требует выполнения всех скриптов.Как распределить определенное количество картографов на несколько заданий в Hadoop?

Так что я думаю, что если я смогу установить предел отображения на каждый скрипт, то может потребоваться время для выполнения, будет меньше, поскольку все сценарии могут получить распределение картографов.

Итак, есть ли способ выделить определенное количество картографов для нескольких сценариев?

ответ

0

Если ваш номер карты установлен правильно (в соответствии с вашими значениями ядра/узла и дисков/узлов), то 1 занятие, использующее все ваши карты или имеющее N задание, использующее карты MapNumber/N, будет иметь тот же результат. Но если вы действительно хотите распространять свои карты на количество заданий, вы можете установить номер карты на рабочий номер (mapreduce.job.maps в mapred-site.xml, я думаю).

Учитывая, у вас еще есть свободные слоты на карте, есть некоторые конфигурации для того, чтобы рабочие места параллельных расстрелы, как обсуждалось здесь: Running jobs parallely in hadoop

Вы также можете установить несколько карт для каждого задания (даже если я не уверен, что это действительно работает), если вы предоставили job.xml, в котором вы установили свой номер карты в команду hadoop.

0

вы можете добавить следующую строку в начале вашего скрипта:

набор mapred.map.tasks 8

и это позволит все ваши скрипты могут работать одновременно.

Обратите внимание, что если ваша машина насыщена, это не повлияет на то, как долго будут работать все сценарии

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