2015-04-17 5 views
0

Каждый разработчик Hadoop знает, что Combiner - это ключ к оптимизации mapreduce, но он не является обязательным. Он может свести к минимуму полосу пропускания и улучшить производительность задания mapreduce. Здесь мой вопрос: hasoop делает множество функций по умолчанию, как проблема локализации данных, но не делает Combiner в качестве значения по умолчанию. Зачем? Это означает, что во всех сценариях комбайнер не рекомендуется? Когда мы не используем объединитель? Если я сделаю это по умолчанию, в чем проблема?Когда мы не используем Combiner в Mapreduce?

ответ

4

Комбинир может использоваться только в том случае, если функция уменьшения равна коммутативным и ассоциативным. Это связано с тем, что значения объединяются локально перед перемещением в произвольном порядке.


Коммутативный - Порядок, в котором мы обрабатываем операцию против значений не оказывает никакого влияния на результат таким образом:

1 + 2 + 3 = 1 + 3 + 2

Ассоциативный - порядок, в котором мы обрабатываем операция против значений не оказывает никакого влияния на результат таким образом:

(1 + 2) + 3 = 1 + (2 + 3)

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

0

Если вы установили комбайнер в свое задание, то Hadoop решит, запустить комбайнер или нет на основе данных.

Но если вы не установите комбайнер, Hadoop не будет запускать объединитель.

Когда объединитель работает, он уменьшит размер выходного сигнала. Небольшой объем данных будет перемещаться по сети.

Для разницы между сумматором и редуктором, проверьте ссылку ниже:

http://blog.optimal.io/3-differences-between-a-mapreduce-combiner-and-reducer/

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