Введение в MapReduce
MapReduce - это вычислительный компонент Hadoop Framework для простой написания приложений, которые параллельно обрабатывают большие объемы данных и надежно и отказоустойчиво хранят на больших кластерах дешевых обычных компьютеров. В этой теме мы собираемся узнать о том, как работает MapReduce?
MapReduce может выполнять распределенные и параллельные вычисления с использованием больших наборов данных на большом количестве узлов. Задание MapReduce обычно разделяет входные наборы данных и затем обрабатывает каждый из них независимо с помощью задач Map совершенно параллельным образом. Затем выходные данные сортируются и вводятся для сокращения задач. Как ввод, так и вывод задания хранятся в файловых системах. Задачи планируются и контролируются платформой.
Как работает MapReduce?
Архитектура MapReduce содержит два основных компонента в качестве сервисов Daemon, отвечающих за выполнение задач мапперов и редукторов, мониторинг и повторное выполнение задач при сбое. В Hadoop 2 и далее Resource Manager и Node Manager являются службами демонов. Когда клиент задания отправляет задание MapReduce, эти демоны вступают в действие. Они также отвечают за параллельную обработку и функции отказоустойчивости заданий MapReduce.
В Hadoop 2 и более поздних версиях функции управления ресурсами и планирования заданий или мониторинга разделяются YARN (еще одним согласователем ресурсов) как различные демоны. По сравнению с Hadoop 1 с Job Tracker и Task Tracker, Hadoop 2 содержит глобальный диспетчер ресурсов (RM) и мастера приложений (AM) для каждого приложения.
- Job Client отправляет работу менеджеру ресурсов.
- Планировщик YARN Resource Manager отвечает за координацию распределения ресурсов кластера между запущенными приложениями.
- Диспетчер узлов YARN работает на каждом узле и осуществляет управление ресурсами на уровне узла, координируя действия с менеджером ресурсов. Он запускает и контролирует вычислительные контейнеры на машине в кластере.
- Application Master помогает ресурсам из Resource Manager и использует Node Manager для запуска и координации задач MapReduce.
- HDFS обычно используется для обмена файлами заданий между другими объектами.
Фазы модели MapReduce
Модель MapReduce имеет три основных и один дополнительный этап:
1. Картограф
- Это первая фаза программирования MapReduce и содержит логику кодирования функции mapper.
- Условная логика применяется к «n» количеству блоков данных, распределенных по различным узлам данных.
- Функция Mapper принимает пары ключ-значение в качестве входных данных как (k, v), где ключ представляет адрес смещения каждой записи, а значение представляет весь контент записи.
- Вывод фазы Mapper также будет в формате значения ключа как (k ', v').
2. Перемешать и сортировать
- Выходные данные различных картографов (k ', v') затем переходят в фазы перемешивания и сортировки.
- Все повторяющиеся значения удаляются, а разные значения группируются по одинаковым ключам.
- Выходные данные фазы перемешивания и сортировки снова будут парами ключ-значение в качестве ключа и массива значений (k, v ()).
3. Редуктор
- Выходной сигнал фазы перемешивания и сортировки (k, v ()) будет входным сигналом фазы редуктора.
- На этом этапе выполняется функция логики редуктора, и все значения агрегируются по соответствующим ключам.
- Редуктор объединяет выходные данные различных картографов и вычисляет итоговые выходные данные.
- Окончательный вывод записывается в один файл в выходной каталог HDFS.
4. Комбинатор
- Это необязательный этап в модели MapReduce.
- Этап объединения используется для оптимизации производительности заданий MapReduce.
- На этом этапе различные выходы преобразователей локально уменьшаются на уровне узла.
- Например, если различные выходные данные преобразователя (k, v), поступающие из одного узла, содержат дубликаты, то они объединяются, то есть локально сокращаются как один (k, v ()) выход.
- Этот этап делает этапы перемешивания и сортировки еще быстрее, что обеспечивает дополнительную производительность в заданиях MapReduce.
Все эти фазы в задании MapReduce можно изобразить следующим образом:
Например, логика MapReduce для определения количества слов в массиве слов может быть показана следующим образом:
fruits_array = (яблоко, апельсин, яблоко, гуава, виноград, апельсин, яблоко)
- Фаза Mapper токенизирует входной массив слов в 'n' количество слов, чтобы получить результат как (k, v). Например, рассмотрим «яблоко». Выходные данные Mapper будут (apple, 1), (apple, 1), (apple, 1).
- Shuffle и Sort принимают вывод mapper (k, v) и группируют все значения в соответствии с их ключами как (k, v ()). т.е. (яблоко, (1, 1, 1)).
- Фаза «Редуктор» принимает выходные данные Shuffle и sort и дает совокупность значений (apple, (1 + 1 + 1)), соответствующих их ключам. т.е. (яблоко, 3).
Спекулятивное выполнение работы MapReduce
Скорость MapReduce определяется самой медленной задачей. Таким образом, чтобы увеличить скорость, новый картограф будет работать с одним и тем же набором данных одновременно. То, что выполнит задачу первым, считается конечным результатом, а другой убивается. Это техника оптимизации.
Преимущества MapReduce
Здесь преимущества MapReduce упоминаются ниже
1. Отказоустойчивость
- В середине работы по уменьшению карты, если машина, несущая несколько блоков данных, выходит из строя, архитектура обрабатывает ошибку.
- Он рассматривает реплицированные копии блоков на альтернативных машинах для дальнейшей обработки.
2. Устойчивость
- Каждый узел периодически обновляет свой статус для главного узла.
- Если подчиненный узел не отправляет свое уведомление, мастер-узел переназначает текущую задачу этого подчиненного узла другим доступным узлам в кластере.
3. Быстрый
- Обработка данных происходит быстро, так как MapReduce использует HDFS в качестве системы хранения.
- MapReduce занимает минуты, чтобы обработать терабайты неструктурированных больших объемов данных.
4. Параллельная обработка
- Задачи MapReduce обрабатывают несколько кусков одного и того же набора данных параллельно, разделяя задачи.
- Это дает преимущество завершения задачи за меньшее время.
5. Доступность
- Несколько копий одних и тех же данных отправляются на многочисленные узлы в сети.
- Таким образом, в случае любого сбоя другие копии легко доступны для обработки без каких-либо потерь.
6. Масштабируемость
- Hadoop - очень масштабируемая платформа.
- Традиционные системы СУБД не масштабируются в соответствии с увеличением объема данных.
- MapReduce позволяет запускать приложения с огромного количества узлов, используя терабайты и петабайты данных.
7. Экономически эффективным
- Функция горизонтального масштабирования Hadoop наряду с программированием MapReduce позволяет хранить и обрабатывать данные очень эффективным и доступным способом.
- Экономия может быть огромной в виде сотен терабайт данных.
Вывод - как работает MapReduce
Современные данные все больше переходят к неструктурированному типу, а огромный, традиционный вариант обработки данных, такой как СУБД, еще сложнее, отнимает много времени и стоит дороже. Но программирование Hadoop MapReduce намного эффективнее, безопаснее и быстрее при обработке больших наборов данных, даже терабайтных или петабайтных.
Рекомендуемые статьи
Это руководство к тому, как работает MapReduce. Здесь мы обсуждаем фазы модели MapReduce с преимуществами и как она работает. Вы также можете взглянуть на следующие статьи, чтобы узнать больше -
- Компоненты экосистемы Hadoop
- MapReduce Алгоритмы
- Что такое MapReduce в Hadoop?
- MapReduce Интервью Вопросы