Что такое MapReduce в Hadoop? ArchiАрхитектура и схема
⚡ Умное резюме
MapReduce — это модель программирования Hadoop, которая преобразует большой набор данных в небольшой результат, выполняя функцию map для каждого входного фрагмента, а затем функцию reduce для сгруппированных промежуточных значений.
Что такое 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:
| плохой | 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 разделяет задачу на подзадачи. Существует два типа подзадач:
- Задания по составлению карты (разделение и составление карты)ping)
- Сокращение задач (перетасовка, сокращение)
Полный процесс выполнения, то есть выполнение задач Map и Reduce, контролируется двумя типами сущностей, называемых:
- работаTracker: действует как главный исполнитель и отвечает за полное выполнение поданной задачи.
- Многозадачность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кедали по всему кластеру.
- Задача делится на несколько подзадач, которые затем выполняются на нескольких узлах данных в кластере.
- Это входит в обязанности данной работы. tracДля координации деятельности необходимо планировать выполнение задач на разных узлах данных.
- Затем выполнением отдельной задачи занимается сама задача. tracker, который находится на каждом узле данных, выполняющем часть задания.
- Задание tracВ обязанности Кера входит отправка отчета о ходе выполнения задания. tracкер.
- Кроме того, задача tracКер периодически посылает сигнал «пульса» на задание.Tracчтобы уведомить его о текущем состоянии системы.
- Таким образом, работа tracкер продолжает track общего прогресса выполнения каждой задачи. В случае сбоя задачи, задача tracКер может перенести это на другое задание. tracкер.


