Почему правильное количество сокращений в Hadoop 0,95 или 1,75? - PullRequest
4 голосов
/ 30 августа 2011

Документация hadoop гласит:

Правильное число сокращений, похоже, равно 0,95 или 1,75, умноженному на (* mapred.tasktracker.reduce.tasks.maximum).

С0,95 все сокращения могут быть запущены немедленно и начать передачу выходных данных карты, когда карты заканчиваются.С 1,75 более быстрые узлы завершат свой первый раунд сокращений и начнут вторую волну сокращений, выполняя намного лучшую работу по балансировке нагрузки.

Являются ли эти значения довольно постоянными?Каковы результаты, когда вы выбрали значение между этими числами или за их пределами?

Ответы [ 3 ]

4 голосов
/ 30 августа 2011

Значения должны соответствовать вашим потребностям.:)

Ниже приведено мое понимание преимуществ значений:

.95 позволяет максимально использовать имеющиеся редукторы.Если Hadoop по умолчанию использует один редуктор, распределение не будет распределяться, что потребует больше времени, чем следует.Существует почти линейное соответствие (в моих ограниченных случаях) увеличению количества редукторов и сокращению времени.Если на 1 редуктор уходит 16 минут, на 8 редукторов это занимает 2 минуты.

1,75 - это значение, которое пытается оптимизировать различия в производительности машин в узле.Он создаст более одного прохода редукторов, так что более быстрые машины будут использовать дополнительные редукторы, в то время как более медленные - нет.
Этот показатель (1,75) должен быть гораздо более приспособлен к вашему оборудованию, чем.95 значение.Если у вас 1 быстрая машина и 3 медленнее, возможно, вы захотите только 1.10.Это число потребует дополнительных экспериментов, чтобы найти значение, соответствующее конфигурации вашего оборудования.Если число редукторов слишком велико, узкие места снова станут узким местом.

2 голосов
/ 31 августа 2011

Чтобы добавить к тому, что сказал Ниджа выше, а также немного личного опыта:

0,95 имеет смысл, поскольку вы используете максимальную емкость вашего кластера, но в то же время вы учитываете несколько пустых слотов задач для того, что произойдет в случае сбоя некоторых ваших редукторов. Если вы используете 1x количество временных интервалов сокращения, ваше неудачное уменьшение имеет , чтобы дождаться завершения хотя бы одного редуктора. Если вы используете 0,85 или 0,75 сокращенных слотов задач, вы используете не так много своего кластера, как могли бы.

0 голосов
/ 28 сентября 2016

Можно сказать, что эти числа больше не действительны. Теперь, согласно книге "Hadoop: полное руководство" и hadoop wiki , мы нацелены на то, чтобы редуктор обрабатывал 5 минут.

Фрагмент из книги:

Выбор количества редукторов. Гоча для новых пользователей в Hadoop. Почти все реальные рабочие места должны установите это на большее число; в противном случае работа будет очень медленной поскольку все промежуточные данные проходят через одну задачу сокращения. Выбор количества редукторов для работы - это больше искусство, чем наука. Увеличение количества редукторов делает фазу уменьшения короче, так как вы получаете больше параллелизма. Однако, если вы берете это тоже далеко, вы можете иметь много маленьких файлов, что является неоптимальным. Одно правило большого пальца, чтобы нацелиться на редукторы, каждый из которых работает около пяти минут и которые производят вывод хотя бы одного блока HDFS.

...