Перемешать и отсортировать, меньше узлов, чем пар - PullRequest
0 голосов
/ 15 ноября 2018

Я пытаюсь понять MapReduce, так что это очень нубский вопрос.Я смотрю на картинку ниже.Насколько я понимаю, что вполне может быть ошибочным, в фазе отображения есть четыре узла, а в фазе тасования - 7 узлов.Каждая пара ключ: значение перемещается на другой узел.Мой вопрос: что произойдет, если в фазе тасования всего 3 узла?Если у вас есть четыре пары ключ: значение одинакового размера, можете ли вы произвольно переместить их в узлы, чтобы не имело значения, что один в два раза больше остальных, или вы разбили одну из пар и распределили ее равномерно?

mapreduce

1 Ответ

0 голосов
/ 15 ноября 2018

Это изображение не отображает фактические узлы.Вместо этого каждый прямоугольник тасования / уменьшения представляет собой одну функцию , вызывающую до reduce().Их 7, потому что на этапе картографирования было выпущено 7 разных ключей.Эти вызовы распределяются между заданиями .Вы сами настраиваете количество задач уменьшения с помощью job.setNumReduceTasks(5).Если у вас есть одна задача сокращения, все вызовы будут происходить там.Если у вас есть две задачи сокращения, некоторые вызовы произойдут в первой задаче сокращения, другие - в другой (как контролируется Partitioner).Если у вас есть 1000 задач сокращения, только некоторые задачи сокращения получат вызовы reduce(), другие вообще не будут обрабатывать данные.

Задачи сокращения запускаются как отдельные процессы на физических узлах кластера.Все они могут запускаться одновременно или нет (зависит от того, сколько у вас ресурсов, а также от вашего планировщика).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...