Что такое MapReduce в Hadoop? ArchiАрхитектура и схема

⚡ Умное резюме

MapReduce — это модель программирования Hadoop, которая преобразует большой набор данных в небольшой результат, выполняя функцию map для каждого входного фрагмента, а затем функцию reduce для сгруппированных промежуточных значений.

  • 🔘 Четыре фазы: Каждая задача выполняется в режиме разделения и сопоставления.pingперемешивание и сокращение, при этом пары ключ-значение перемещаются между этапами.
  • ☑️ Реализованный пример: Три строки текста превращаются в семь слов, точно показывая вклад каждого этапа.
  • Раздельный размер: Для каждого разделения входных данных выполняется одна задача map, а размер разделения обычно соответствует размеру блока HDFS.
  • 🧪 Промежуточные данные: Результаты работы Map записываются на локальный диск, а не в HDFS, поскольку дублирование данных, которые могут быть использованы повторно, является неэффективным.
  • 🇧🇷 Координация: РаботаTracКер планирует работу и задачи.TracПациенты сообщают о прогрессе посредством периодических сигналов сердцебиения.
  • ⚠️ Примечание к версии: YARN заменил эту пару на ResourceManager, NodeManagers и ApplicationMaster для каждого задания из Hadoop 2.x.

Архитектура MapReduce в Hadoop объяснена на примере.

Что такое MapReduce в Hadoop?

MapReduce — это программная платформа и модель программирования, используемая для обработки огромных объемов данных. Программы MapReduce работают в два этапа: Map и Reduce. Задачи Map связаны с разделением и сопоставлением данных.ping в то время как задачи Reduce перемешивают и сокращают данные.

Hadoop способен запускать программы MapReduce, написанные на различных языках: Java, Рубин, Python и C++Программы MapReduce по своей природе параллельны, поэтому они очень полезны для проведения крупномасштабного анализа данных с использованием нескольких машин в кластере.

Входными данными для каждого этапа являются пары ключ-значение. Кроме того, каждый программист должен указать две функции: функцию map и функцию reduce.

Уменьшение карты ArchiТехнология больших данных объяснена на примере

Весь процесс проходит четыре этапа выполнения, а именно: разделение, отображение.ping, перетасовка и сокращение.

В этом уроке по MapReduce давайте разберемся в нем на примере.

Предположим, у вас есть следующие входные данные для вашего MapReduce. Big Data программа:

Welcome to Hadoop Class
Hadoop is good
Hadoop is bad

Схема ниже tracЭти три строки проходят через каждый этап, от разделения входных данных слева до окончательного подсчета слов справа.

Схема архитектуры MapReduce tracразделение трех входных линий, отображениеpingперетасовка и сокращение

Конечный результат задачи MapReduce:

плохой 1
Класс 1
хорошо 1
Hadoop 3
is 2
в 1
Добро пожаловать 1

В алгоритме MapReduce для обработки больших данных данные проходят следующие этапы.

Входные разделения

В задаче MapReduce в Big Data входные данные делятся на части фиксированного размера, называемые входными фрагментами. Входной фрагмент — это часть входных данных, которая обрабатывается одной операцией MapReduce.

Картаping

Это самый первый этап выполнения программы MapReduce. На этом этапе данные из каждого сегмента передаются в Map.ping функция для получения выходных значений. В нашем примере задача карты —ping На первом этапе необходимо подсчитать количество вхождений каждого слова из исходных данных (более подробная информация об исходных данных приведена ниже) и составить список в следующем виде: .

шарканье

На этом этапе обрабатываются выходные данные карты.ping Этап. Его задача — объединить соответствующие записи из карты.ping Фазовый выход. В нашем примере одинаковые слова объединены вместе с указанием их частоты.

Сокращение

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

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

Уменьшение карты Archiтектура подробно объяснена

Ниже описаны способы размещения и хранения задач разделения (split), задач сопоставления (map tasks) и задач сокращения (reduce tasks) в кластере.

  • Для каждого разделения создается отдельная задача map, которая затем выполняет функцию map для каждой записи в разделении.
  • Всегда выгодно иметь несколько разбиений, поскольку время, затраченное на обработку одного разбиения, невелико по сравнению со временем, затраченным на обработку всего входного потока. Чем меньше разбиений, тем лучше распределяется нагрузка, поскольку разбиения обрабатываются параллельно.
  • Однако слишком малые размеры разделения также нежелательны. Когда размеры разделения слишком малы, накладные расходы на управление разделением и создание задач сопоставления начинают доминировать над общим временем выполнения задания.
  • Для большинства задач лучше установить размер разделения равным размеру HDFS Размер блока, который по умолчанию составляет 128 МБ, начиная с Hadoop 2.x (в Hadoop 1.x он составлял 64 МБ), и управляется... dfs.blocksize имущество.
  • При выполнении задач map выходные данные записываются на локальный диск соответствующего узла, а не в HDFS.
  • Причина выбора локального диска вместо HDFS заключается в том, чтобы избежать репликации, которая происходит во время работы хранилища HDFS.
  • Вывод карты — это промежуточный вывод, который обрабатывается задачами сокращения для получения окончательного вывода.
  • После завершения задания выходные данные карты можно выбросить. Таким образом, хранение его в HDFS с репликацией становится излишним.
  • В случае сбоя узла, прежде чем выходные данные карты будут использованы задачей сокращения, Hadoop повторно запускает задачу карты на другом узле и заново создает выходные данные карты.
  • Задачи Reduce не работают на основе концепции локальности данных. Выходные данные каждой задачи Map передаются в задачу Reduce. Выходные данные Map передаются на машину, где выполняется задача Reduce.
  • На этом компьютере выходные данные объединяются, а затем передаются пользовательской функции сокращения.
  • В отличие от вывода команды map, вывод команды reduce хранится в HDFS (первая реплика хранится на локальном узле, а остальные — на удаленных узлах). Таким образом, запись вывода команды reduce потребляет пропускную способность сети, но только столько же, сколько потребляет обычный конвейер записи в HDFS.

Как MapReduce организует работу?

В этом уроке по MapReduce мы узнаем, как работает MapReduce.

Hadoop разделяет задачу на подзадачи. Существует два типа подзадач:

  1. Задания по составлению карты (разделение и составление карты)ping)
  2. Сокращение задач (перетасовка, сокращение)

Полный процесс выполнения, то есть выполнение задач Map и Reduce, контролируется двумя типами сущностей, называемых:

  1. работаTracker: действует как главный исполнитель и отвечает за полное выполнение поданной задачи.
  2. МногозадачностьTracКерс: действуют как рабы, каждый из них выполняет часть работы.

На каждое задание, отправленное на выполнение в систему, приходится одно задание.Tracker, который находится на NameNode, и существует несколько Task.Trackers, которые находятся на DataNodes.

Примечание: РаботаTracкер и задачаTracПара ker относится к MapReduce версии 1 (Hadoop 1.x). Начиная с Hadoop 2.x, YARN распределяет эти обязанности между кластерным ResourceManager, NodeManager на каждом узле и одним ApplicationMaster для каждой задачи, хотя сами фазы map, shuffle и reduce остаются неизменными.

На приведенной ниже диаграмме показано, как отправленное задание разбивается на задачи и tracкедали по всему кластеру.

Диаграмма, показывающая разделение задачи на задачи map и reduce. tracзаработано работойTracкер и задачаTracKERS

  • Задача делится на несколько подзадач, которые затем выполняются на нескольких узлах данных в кластере.
  • Это входит в обязанности данной работы. tracДля координации деятельности необходимо планировать выполнение задач на разных узлах данных.
  • Затем выполнением отдельной задачи занимается сама задача. tracker, который находится на каждом узле данных, выполняющем часть задания.
  • Задание tracВ обязанности Кера входит отправка отчета о ходе выполнения задания. tracкер.
  • Кроме того, задача tracКер периодически посылает сигнал «пульса» на задание.Tracчтобы уведомить его о текущем состоянии системы.
  • Таким образом, работа tracкер продолжает track общего прогресса выполнения каждой задачи. В случае сбоя задачи, задача tracКер может перенести это на другое задание. tracкер.

Часто задаваемые вопросы (FAQ)

Начиная с Hadoop 2.x, это реализовано в YARN. Планированием занимается ResourceManager, работающий в масштабе кластера, NodeManager запускается на каждом узле, а ApplicationMaster — для каждой задачи. tracвыполняет свои задачи. Этапы map и reduce остаются без изменений.

Модели, обученные на основе истории выполнения заданий, прогнозируют время выполнения, рекомендуют размеры разделения и количество редукторов, а также выявляют асимметрию на ранней стадии. Они также отслеживают значения счетчиков, отмечая необычно медленные или завершающиеся с ошибкой задания до окончания их выполнения.

Copilot хорошо справляется с созданием структуры: сигнатуры мапперов и редьюсеров, обобщения, импорт и вызовы конфигурации драйверов. Решения по схеме, например, какое поле является группой.ping Главное, что по-прежнему нужен разработчик, который разбирается в данных.

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

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

Spark MapReduce хранит промежуточные результаты в памяти и представляет задачу в виде ориентированного графа этапов, тогда как MapReduce записывает промежуточные результаты на диск между этапами. Spark Таким образом, итеративный подход значительно ускоряет работу.

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

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

Подведем итог этой публикации следующим образом: