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

Содержание:

Anonim

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

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

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

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

В этом руководстве для начинающих по Hadoop MapReduce вы узнаете:

  • Что такое MapReduce в Hadoop?
  • Подробное объяснение архитектуры MapReduce в больших данных
  • Подробное описание архитектуры MapReduce
  • Как MapReduce организует работу?

Подробное объяснение архитектуры MapReduce в больших данных

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

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

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

Welcome to Hadoop ClassHadoop is goodHadoop is bad

Архитектура MapReduce

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

Плохо 1
Учебный класс 1
хороший 1
Hadoop 3
является 2
к 1
Добро пожаловать 1

Данные проходят следующие этапы MapReduce в больших данных

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

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

Картография

Это самый первый этап выполнения программы map-reduce. На этом этапе данные в каждом разбиении передаются в функцию отображения для получения выходных значений. В нашем примере задача фазы сопоставления состоит в том, чтобы подсчитать количество вхождений каждого слова из разбиений ввода (более подробная информация о разбиении ввода приведена ниже) и подготовить список в форме <слово, частота>

Перемешивание

Эта фаза потребляет выходные данные фазы сопоставления. Его задача - консолидировать соответствующие записи из выходных данных фазы Mapping. В нашем примере одни и те же слова объединяются вместе с соответствующей частотой.

Сокращение

На этом этапе собираются выходные значения этапа перемешивания. Эта фаза объединяет значения из фазы перемешивания и возвращает одно выходное значение. Вкратце, этот этап подводит итог всему набору данных.

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

Подробное описание архитектуры MapReduce

  • Для каждого разбиения создается одна задача сопоставления, которая затем выполняет функцию сопоставления для каждой записи в разбиении.
  • Всегда полезно иметь несколько разделений, потому что время, необходимое для обработки разделения, мало по сравнению со временем, затрачиваемым на обработку всего ввода. Когда разбиения меньше, обработку лучше сбалансировать по нагрузке, поскольку мы обрабатываем разбиения параллельно.
  • Однако также нежелательно иметь слишком маленькие щели. Когда разделения слишком малы, перегрузка управления разделениями и созданием задач карты начинает доминировать в общем времени выполнения задания.
  • Для большинства заданий лучше сделать размер разделения равным размеру блока HDFS (по умолчанию это 64 МБ).
  • Выполнение задач карты приводит к записи вывода на локальный диск на соответствующем узле, а не в HDFS.
  • Причина выбора локального диска вместо HDFS заключается в том, чтобы избежать репликации, которая имеет место в случае работы хранилища HDFS.
  • Вывод карты - это промежуточный вывод, который обрабатывается задачами сокращения для получения окончательного вывода.
  • Как только работа будет завершена, вывод карты можно выбросить. Таким образом, хранение его в HDFS с репликацией становится излишним.
  • В случае сбоя узла, прежде чем выходные данные карты будут использованы задачей сокращения, Hadoop повторно запускает задачу карты на другом узле и повторно создает выходные данные карты.
  • Задача сокращения не работает с концепцией локальности данных. Вывод каждой задачи карты подается в задачу сокращения. Вывод карты передается на компьютер, на котором выполняется задача сокращения.
  • На этом компьютере выходные данные объединяются и затем передаются пользовательской функции сокращения.
  • В отличие от вывода карты, вывод сокращения сохраняется в HDFS (первая реплика хранится на локальном узле, а другие реплики хранятся на узлах вне стойки). Итак, напишите сокращение вывода

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

Теперь в этом руководстве по MapReduce мы узнаем, как работает MapReduce.

Hadoop разделяет работу на задачи. Есть два типа задач:

  1. Задачи карты (разделение и отображение)
  2. Уменьшить задачи (перемешивание, уменьшение)

как уже упоминалось выше.

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

  1. Jobtracker : действует как мастер (отвечает за полное выполнение представленного задания)
  2. Множественные трекеры задач : действуют как подчиненные , каждый из которых выполняет свою работу

Для каждого задания, представленного для выполнения в системе, существует одно средство отслеживания заданий, которое находится на Namenode, и несколько средств отслеживания задач, которые находятся на Datanode .

Как работает Hadoop MapReduce
  • Задание делится на несколько задач, которые затем выполняются на нескольких узлах данных в кластере.
  • Трекер заданий отвечает за координацию действий путем планирования задач для запуска на разных узлах данных.
  • За выполнением отдельной задачи будет следить трекер задач, который находится на каждом узле данных, выполняющем часть задания.
  • Задача трекера задач - отправлять отчет о проделанной работе в трекер заданий.
  • Кроме того, трекер задач периодически отправляет «пульс» в Jobtracker, чтобы уведомить его о текущем состоянии системы.
  • Таким образом, система отслеживания вакансий отслеживает общий прогресс каждой работы. В случае сбоя задачи трекер заданий может перенести его на другой трекер задач.