Какова цель фазы тасования и сортировки в редукторе в Map Reduce Programming?

В программировании Map Reduce фаза сокращения включает в себя перемешивание, сортировку и уменьшение в качестве составных частей. Сортировка является дорогостоящим делом.

Какова цель перемешивания и сортировки на этапе редуктора в Map Reduce Programming?

95 голосов | спросил Nithin K Anil 3 MarpmMon, 03 Mar 2014 12:10:49 +04002014-03-03T12:10:49+04:0012 2014, 12:10:49

9 ответов


0

Прежде всего shuffling - это процесс передачи данных из картографов в редукторы, поэтому я думаю, что это очевидно необходимо для редукторов, так как в противном случае они не могли бы иметь никакого ввода (или ввода от каждого преобразователя). Перемешивание может начаться еще до окончания фазы карты, чтобы сэкономить время. Вот почему вы можете видеть статус уменьшения больше 0% (но меньше 33%), когда статус карты еще не равен 100%.

Sorting экономит время для редуктора, помогая легко определить, когда должна начинаться новая задача сокращения. Он просто запускает новую задачу сокращения, когда, проще говоря, следующий ключ в отсортированных входных данных отличается от предыдущего. Каждая задача сокращения занимает список пар «ключ-значение», но она должна вызывать метод redu (), который принимает входные данные из списка ключей (значение), поэтому он должен группировать значения по ключу. Это легко сделать, если входные данные предварительно отсортированы (локально) на этапе отображения и просто отсортированы слиянием на этапе сокращения (поскольку преобразователи получают данные от многих картографов).

Partitioning, который вы упомянули в одном из ответов, - это другой процесс. Он определяет, в какой редукторе будет отправлена ​​пара (ключ, значение), вывод фазы карты. Partitioner по умолчанию использует хеширование ключей для их распределения по задачам сокращения, но вы можете переопределить его и использовать свой собственный Partitioner.

Отличным источником информации для этих шагов является учебное руководство Yahoo .

Хорошим графическим представлением этого является следующее (на этом рисунке shuffle называется «copy»):

enter описание изображения здесь

Обратите внимание, что shuffling и sorting не выполняются вообще, если вы указываете нулевые редукторы (setNumReduceTasks (0)). Затем задание MapReduce останавливается на фазе карты, а фаза карты не включает никакой сортировки (так что даже фаза карты быстрее).

ОБНОВЛЕНИЕ: Поскольку вы ищете что-то более официальное, вы также можете прочитать книгу Тома Уайта "Hadoop: Полное руководство". Здесь - интересная часть вашего вопроса.
Том Уайт был коммиттером Apache Hadoop с февраля 2007 года и является членом Apache Software Foundation, так что я думаю, что он довольно надежный и официальный ...

ответил vefthym 4 MarpmTue, 04 Mar 2014 14:46:36 +04002014-03-04T14:46:36+04:0002 2014, 14:46:36
0

Давайте вернемся к ключевым этапам программы Mapreduce.

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

фаза объединения выполняется объединителями. combiner должен объединять пары ключ /значение с одним и тем же ключом. Каждый объединитель может работать ноль, один или несколько раз.

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

Разделитель решает, какой редуктор получит конкретную пару ключ-значение.

редуктор получает отсортированные пары ключ /[список значений], отсортированные по ключу. Список значений содержит все значения с одним и тем же ключом, созданным картографами. Каждый редуктор испускает ноль, одну или несколько пар ключ /значение вывода для каждой пары ключ /значение ввода .

Ознакомьтесь с этой javacodegeeks статьей Марией Юрковичовой и mssqltips статья Datta для лучшего понимания

Ниже приведено изображение из safaribooksonline статьи . /р>

 введите описание изображения здесь

ответил Ravindra babu 28 +03002015-10-28T18:59:22+03:00312015bEurope/MoscowWed, 28 Oct 2015 18:59:22 +0300 2015, 18:59:22
0

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

 введите описание изображения здесь

Если я еще раз укажу реальную цель

  • Split: . Улучшает параллельную обработку, распределяя нагрузку обработки по разным узлам (Mappers), что сокращает общее время обработки.

  • Объединить . Сокращает вывод каждого Mapper. Это позволит сэкономить время, затрачиваемое на перемещение данных с одного узла на другой.

  • Sort (Shuffle & Sort): упрощает во время выполнения планировать (порождать /запускать) новые редукторы, где при прохождении списка отсортированных элементов всякий раз, когда текущий ключ отличается от предыдущего, он может породить новый редуктор.

ответил Supun Wijerathne 1 AM00000070000003131 2017, 07:33:31
0

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

ответил Praveen Sripati 4 MarpmTue, 04 Mar 2014 16:18:50 +04002014-03-04T16:18:50+04:0004 2014, 16:18:50
0

Я всегда предполагал, что это было необходимо, так как выходные данные от преобразователя являются входными данными для редуктора, поэтому он был отсортирован по пространству клавиш, а затем разбит на сегменты для каждого входа редуктора. Вы хотите, чтобы все одинаковые значения ключа оказались в одном сегменте, идущем к редуктору, чтобы они сводились вместе. Нет смысла отправлять K1, V2 и K1, V4 в разные редукторы, так как они должны быть вместе, чтобы их уменьшить.

Пытался объяснить это как можно проще

ответил BasicHorizon 3 MarpmMon, 03 Mar 2014 13:04:55 +04002014-03-03T13:04:55+04:0001 2014, 13:04:55
0

Перестановка - это процесс, посредством которого промежуточные данные от картографов передаются в 0,1 или более редукторов Каждый редуктор получает 1 или более ключей и связанных с ними значений в зависимости от количества редукторов (для сбалансированной нагрузки). Кроме того, значения, связанные с каждым ключом, сортируются локально.

ответил Shailvi 31 MaramMon, 31 Mar 2014 00:21:37 +04002014-03-31T00:21:37+04:0012 2014, 00:21:37
0

Есть только две вещи, которые MapReduce делает НАТУРАЛЬНО: сортировка и (реализуется сортировка) масштабируемый GroupBy.

Большинство приложений и шаблонов проектирования на MapReduce построены на этих двух операциях, которые предоставляются с помощью shuffle и sort.

ответил Evgeny Benediktov 3 MarpmMon, 03 Mar 2014 16:11:44 +04002014-03-03T16:11:44+04:0004 2014, 16:11:44
0

это это хорошее чтение. Надеюсь, поможет. С точки зрения сортировки, о которой вы говорите, я думаю, что это для операции слияния на последнем шаге Map. Когда операция сопоставления завершена, и необходимо записать результат на локальный диск, мульти-слияние будет выполнено для разбиений, сгенерированных из буфера. А для операции слияния полезна сортировка каждого раздела в расширенном.

ответил hakunami 12 Mayam14 2014, 05:44:47
0

Ну, В Mapreduce есть две важные фразы, называемые Mapper и reducer , которые слишком важны, но Reducer является обязательным. В некоторых программах редукторы не обязательны. Теперь перейдем к вашему вопросу. Перемешивание и сортировка - две важные операции в Mapreduce. Первая структура Hadoop берет структурированные /неструктурированные данные и разделяет данные на Key, Value.

Теперь программа Mapper разделяет и организует данные в ключи и значения для обработки. Сгенерируйте значения ключа 2 и значения 2. Эти значения следует обработать и переставить в правильном порядке, чтобы получить желаемое решение. Теперь эта перестановка и сортировка выполняются в вашей локальной системе (Framework позаботится об этом) и обрабатывают в локальной системе после того, как Framework Framework очистит данные в локальной системе. Ok

Здесь мы также используем combiner и раздел , чтобы оптимизировать процесс перемешивания и сортировки. После правильной компоновки эти ключевые значения передаются в Reducer для получения желаемого результата клиента. Наконец Редуктор получает желаемый результат.

K1, V1 -> K2, V2 (напишем программу Mapper), -> K2, V '(здесь данные случайные и мягкие) -> K3, V3 Генерировать выход. К4, В4.

Обратите внимание, что все эти шаги являются только логической операцией, а не изменяют исходные данные.

Ваш вопрос: какова цель фазы перетасовки и сортировки в редукторе в Map Reduce Programming?

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

ответил Venu A Positive 15 MonEurope/Moscow2014-12-15T12:19:16+03:00Europe/Moscow12bEurope/MoscowMon, 15 Dec 2014 12:19:16 +0300 2014, 12:19:16

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132