Как установить количество редукторов во время выполнения в зависимости от количества обрабатывающих узлов в кластере - PullRequest
1 голос
/ 04 марта 2012

Есть ли способ установить эту информацию во время выполнения в зависимости от общего количества обрабатываемых узлов?

job.setNumReduceTasks( NO_OF_REDUCERS );

Итак, скажем, если я скомпилирую свой код на персональном ноутбуке, который только что настроил узел,тогда он должен установить число редукторов в 1. Но, если я скомпилирую его для очень большого кластера, он должен быть установлен соответственно.

Ответы [ 2 ]

1 голос
/ 04 марта 2012

Количество фактически созданных сокращений зависит от входных данных для задания и емкости кластера.Таким образом, вам не нужно беспокоиться об этом.Просто не используйте жесткий код, который имеет значение num_reducers.Он будет выбран соответствующим образом во время выполнения.

Также вы можете передать значение через командную строку (т. Е. -D mapred.reduce.tasks), чтобы контролировать сокращения, порожденные во время выполнения.

1 голос
/ 04 марта 2012

Регистрация на org.apache.hadoop.mapreduce.ClusterMetrics;который должен содержать функции для получения информации, которую вы ищете.У меня есть это в моих заметках для чего-то другого;но это должно предоставить информацию о кластере, которую вы ищете, а также некоторые другие детали.

Я искал в ней количество редукторов и планирую использовать функцию getReduceSlotCapacity, чтобы узнать, сколькоработа может потреблять.

hth

...