Как определить MapReduce, сколько картографов использовать одновременно? - PullRequest
0 голосов
/ 19 сентября 2011

Я пишу приложение для индексирования MapReduce. Мне удалось разделить входы с помощью NLineInputFormat, и теперь в моем приложении есть несколько сотен картографов. Тем не менее, только 2 / машины из них активны в то же время, остальные "в ожидании". Я считаю, что такое поведение значительно замедляет приложение.

Как сделать так, чтобы Hadoop запускал как минимум 100 из них одновременно на одну машину?

Я использую старый синтаксис hadoop api. Вот что я пробовал до сих пор:

    conf.setNumMapTasks(1000);
    conf.setNumTasksToExecutePerJvm(500);

ни один из них, кажется, не имеет никакого эффекта.

Есть какие-нибудь идеи, как сделать так, чтобы мапперы действительно запускались параллельно?

1 Ответ

2 голосов
/ 19 сентября 2011

JobConf.setNumMapTasks () - это просто подсказка для структуры MR, и я не уверен, что эффект от ее вызова.В вашем случае общее число задач сопоставления по всему заданию должно быть равно общему количеству строк на входе, деленному на количество строк, сконфигурированных в NLineInputFormat.Вы можете найти более подробную информацию об общем количестве задач по карте / сокращению по всей работе здесь .

Описание mapred.tasktracker.map.tasks.maximum говорит

Максимальное количество задач карты, которые будут одновременно выполняться трекером задач.

Вам необходимо настроить mapred.tasktracker.map.tasks.maximum (значение по умолчанию 2) для изменения количества задач карты, выполняемых параллельно на определенном узле системой отслеживания задач.Я не смог получить документацию по 0.20.2, поэтому я не уверен, существует ли этот параметр или же используется то же имя параметра в выпуске 0.20.2.

...