2013-10-07 4 views
0

У меня есть задание MapReduce, которое считывает файл, а затем собирает все слова длиной не более 5 символов и начинается с буквы верхнего регистра, используя первую букву в качестве ключа. Я дважды выполнял задание без использования комбайнера и во второй раз с объединителем. Я сравнивал время выполнения, и я заметил, что использование комбайнера увеличило время выполнения. Я хотел бы знать, что вызывает увеличение времени и всегда ли это происходит при использовании объединителя?Время выполнения MapReduce с комбайнером

Спасибо

ответ

1

Как само название предполагает, сумматоры следует использовать только тогда, когда существует возможность комбинировать. Как правило, он применяется к функциям, которые являются коммутативными (a.b = b.a) и ассоциативными {a. (B.c) = (a.b) .c}. Но это только для осторожности, нет жесткого и быстрого правила, что оно должно быть коммутативным и ассоциативным. Комбинированные могут работать только на подмножестве ваших ключей и значений или вообще не могут выполняться. Поэтому, если в выводе картографа меньше дубликатов ключей, то время от времени комбинаторы могут иметь неприятные последствия и вместо этого становятся бесполезной нагрузкой. Поэтому используйте комбинаторы только тогда, когда имеется достаточное количество объединенных комбинаций.

Цитируя Чак Лам «Hadoop в действии»:.

«Комбинатор не обязательно повышает производительность Вы должны контролировать поведение задания, чтобы увидеть, если число записей, выводимый на сумматор значительно меньше, чем число записей, идущих в. The сокращение должны оправдать дополнительное время выполнения запуска комбайнера. "

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

Подробнее о моей статье here.

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