Какова цель фаз перетасовки и сортировки в редукторе в Программе сокращения карты?

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

Какова цель фаз перетасовки и сортировки в редукторе в Программе сокращения карты?

Ответ 1

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

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

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

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

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

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

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

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

Ответ 2

Пересмотреть ключевые фазы программы Mapreduce.

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

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

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

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

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

Взгляните на эту статью jaacodegeeks статью Maria Jurcovicova и mssqltips статьи Датты для лучшего понимания

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

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

Ответ 3

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

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

Если я снова заявлю реальную цель

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

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

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

Ответ 4

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

Ответ 5

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

Ответ 6

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

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

Ответ 7

Есть только две вещи, которые MapReduce делает NATIVELY: Сортировка и (реализованная по сортировке) масштабируемая GroupBy.

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

Ответ 8

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

Ответ 9

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

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

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

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

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

Ваш вопрос: какова цель фаз перетасовки и сортировки в редукторе в Программе сокращения карты?

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