Сетевое узкое место пропускной способности для сортировки mapreduce промежуточных ключей?

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

1,000,000 x 1,000,000

: потенциальные машины, передающие маленький ключ/, оценивают пар промежуточных результатов друг с другом? Разве это не узкое место?

5
задан Binary Nerd 14 July 2012 в 02:49
поделиться

1 ответ

Это правда, что Одним из узких мест в Hadoop MapReduce является пропускная способность сети между машинами в кластере. Однако выходные данные каждой фазы карты не отправляются на каждую машину в кластере.

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

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

Если используется несколько редукторов, карты разделяют их выходные данные, создавая по одному для каждого редуктора. Разделы отправляются в правильное сокращение. Это гарантирует, что все данные для данного ключа обрабатываются одним сокращением.

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

7
ответ дан 14 December 2019 в 08:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: