2015-07-02 4 views
2

Я использую рамки python yelp/mrjob для своих заданий mapreduce. Имеются только около 4 Гб данных, и я не хочу испытывать проблемы с настройкой Hadoop или EMR. У меня 64-ядерная машина, и для обработки данных с помощью mrjob требуется около 2 часов. Я замечаю, что для моей работы mrjob назначает 54 mappers, но, похоже, работает только по одному. Есть ли способ заставить mrjob выполнять все задачи параллельно со всеми ядрами процессора?Использовать многоядерные ядра с LocalMRJobRunner для MRJob

Я вручную изменил количество задач, но не очень помог. --jobconf mapred.map.tasks=10 --jobconf mapred.reduce.tasks=10

EDIT: Я имею -r local когда я выполняю работу, однако, глядя на code, кажется, он по умолчанию запустить один процесс в то время. Скажите, пожалуйста, я ошибаюсь.

ответ

3

Локальный бегун для работы с mrjob только порождает один подпроцесс для каждого этапа МР, один для картографа, один для объединителя (необязательно) и один для редуктора и передает данные между ними через трубу. Он не предназначен для параллелизма вообще, поэтому он никогда не будет использовать ваши 64 ядра.

Мое предложение было бы запустить hadoop на вашем локальном компьютере и отправить задание с помощью опции -r hadoop. Хэллоп-кластер, запущенный на вашей локальной машине в режиме pseduo-распределенного режима, должен иметь возможность использовать преимущества нескольких ваших ядер.

Смотрите этот вопрос, который обращается к этой теме: Full utilization of all cores in Hadoop pseudo-distributed mode

+0

Спасибо, я надеюсь запустить hadoop в докер. – Andy

-1

Бегун для задания может быть задан в командной строке с помощью опции -r.

Когда вы запускаете сценарий mrjob из командной строки, режим запуска по умолчанию - inline, который запускает ваше задание на вашем локальном компьютере за один процесс. Другими очевидными вариантами для рабочих заданий являются emr и hadoop.

Вы можете сделать прогон задания параллельно на вас локальную машину, установив бегун в local

$ python myjob.py -r local 

Эти --jobconf вариантов только узнаны Hadoop (т.е. на ОМ или кластере Hadoop).

+0

Я на самом деле используется '-r local' при выполнении команды, однако, я нашел, что это все-таки выполнять задачи последовательно. Глядя на документ, он говорит: «Локальный режим теперь запускает по 2 карты и 2 редуктора параллельно по умолчанию», но я не могу понять, как изменить значение по умолчанию. – Andy

+0

OK похоже, что поведение изменилось. Несколько раз, когда я использовал его в прошлом, он запирал мою машину во время выполнения задания, потому что он использует * all * CPU, поэтому имеет смысл, что они ограничивают это поведение. – msharp

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

  • Нет связанных вопросов^_^