Как Mapper и Reducer работают вместе «без» сортировки?

Я знаю, как работает уменьшение карты и какие шаги у меня есть:

  • Отображение
  • Перемешивание и сортировка
  • Сокращение

Конечно, у меня есть Partitioning, Combiners, но сейчас это не важно.

Интересно то, что когда я запускаю задания по уменьшению карты, похоже, что мапперы и редукторы работают параллельно:

Как Mapper и Reducer работают вместе «без» сортировки?

Так что я не понимаю, как это возможно.

Вопрос 1. Если у меня есть несколько узлов, которые выполняют операцию сопоставления, как редюсер может начать работать? Потому что Редуктор не может начать работать без сортировки, верно? (ввод должен быть отсортирован для Reducer — если маппер все еще работает, ввод не может быть отсортирован).

Вопрос 2. Если у меня есть несколько редукторов, как окончательные данные будут объединены? Другими словами, окончательные результаты должны быть отсортированы правильно? Это означает, что мы тратим дополнительное время O ( n * Log n) для слияния «несколько результатов редуктора?»

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

LoMaPh 30.05.2019 02:07

если несколько редьюсеров завершили задачу, у них могут быть одинаковые ключи в результате, верно? Таким образом, окончательный результат должен быть объединен. Например, если я пытаюсь найти «среднюю зарплату» и у меня есть 2 редуктора, в конце концов я должен объединить результат, иначе у меня будут разные результаты в разных выходных данных редуктора. В этом случае мне нужно отсортировать, чтобы найти похожие ключи (сгруппировать похожие ключи).

grep 30.05.2019 18:44

Редьюсер, который обрабатывает каждый ключ, уникален: «Необходимо, чтобы для любого ключа, независимо от того, какой экземпляр маппера его сгенерировал, раздел назначения был одним и тем же. Если ключ «кошка» генерируется в двух отдельных (ключ, значение) парах , они оба должны быть уменьшены вместе». источник

LoMaPh 30.05.2019 22:03
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
3
209
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Редьюсеры могут начать копировать результаты картографов, как только они станут доступны. Он называется фаза копирования задачи сокращения (см. Полное руководство по Hadoop, глава 7 «Как работает MapReduce»).
Также оттуда:

...When all the map outputs have been copied, the reduce task moves into the sort phase (which should properly be called the merge phase, as the sorting was carried out on the map side), which merges the map outputs, maintaining their sort ordering. This is done in rounds...

И, конечно же, помните, что Hadoop также является MPP, а это значит, что он может обрабатывать их в массовом параллельном процессе. Без обид, но вроде забавный вопрос. Потому что, если бы Hadoop этого не делал, я думаю, это было бы не так полезно для компаний.

Kenry Sanchez 31.05.2019 03:56

@KenrySanchez Не уверен, почему этот вопрос может быть забавным, может быть, вы не полностью его поняли. Отдельно я считаю, что Hadoop — это классический пример кластерной архитектуры, а не MPP. Если вы находите это запутанным, проверьте, например, stackoverflow.com/questions/5570936/….

mazaneicha 02.06.2019 16:38

не волнуйтесь, это без обид ;). Я понимаю архитектуру Hadoop. Но, как я уже говорил им ранее. В профессиональной среде компании вам необходимо обрабатывать большие объемы данных, и даже этот Hadoop должен работать в кластере (даже с 1 мастером и двумя убийцами). Настоящая сила приходит с MPP. Кластер — это просто способ обновления производственной мощности, в данном случае горизонтально масштабируемого. Но на самом деле вы правы, это классический пример кластерной архитектуры.

Kenry Sanchez 02.06.2019 20:02

Другие вопросы по теме