Учебники

5) MAPReduce

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

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

На этой тренировке для начинающих вы научитесь

Как работает MapReduce? Завершить процесс

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

Давайте разберемся с этим на примере —

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

Welcome to Hadoop Class
Hadoop is good
Hadoop is bad

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

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

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

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

Данные проходят через следующие фазы

Входные сплиты:

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

картографирование

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

шарканье

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

Снижение

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

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

Архитектура MapReduce объяснена подробно

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

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

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

  1. Задачи карты  (Splits & Mapping)
  2. Уменьшить задачи  (перетасовка, уменьшение)

как указано выше.

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

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

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

Что такое MapReduce?  Как это работает - учебник по Hadoop MapReduce

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