Открыть сервис

Hadoop MapReduce

MapReduce — это программная модель и парадигма параллельных вычислений, предназначенная для обработки больших объёмов данных (Big Data) на кластерах из стандартного оборудования. Модель была разработана компанией Google и впервые описана в 2004 году, а её открытая реализация стала ключевым компонентом экосистемы Apache Hadoop. Основная идея заключается в разделении задачи на две фазы: Map (отображение) и Reduce (свёртка), что позволяет автоматически распределять вычисления между узлами кластера, обеспечивая отказоустойчивость и масштабируемость.

История

Предпосылки появления

В начале 2000-х годов интернет-компании столкнулись с необходимостью обрабатывать петабайты данных (индексация веб-страниц, анализ логов, ранжирование). Традиционные реляционные базы данных и однопоточные алгоритмы не справлялись с такими объёмами. Требовалась система, способная работать на тысячах недорогих серверов, где сбои отдельных узлов были нормой, а не исключением.

Разработка в Google

В 2004 году инженеры Google Джеффри Дин и Санджай Гемават опубликовали статью «MapReduce: Simplified Data Processing on Large Clusters». В ней они описали абстракцию, вдохновлённую функциями map и reduce из языков функционального программирования (Lisp, Haskell). Google реализовал проприетарную версию MapReduce, которая использовалась для генерации поискового индекса, обработки изображений и машинного обучения. Однако код Google не был опубликован.

Появление Hadoop

В 2005 году инженер Yahoo! Даг Каттинг, работавший над проектом Nutch (поисковая система с открытым исходным кодом), решил реализовать модель MapReduce и распределённую файловую систему (HDFS) на Java. Так родился Apache Hadoop. В 2008 году Hadoop стал проектом верхнего уровня Apache Software Foundation. Ключевым преимуществом Hadoop MapReduce перед оригиналом Google была открытость кода и возможность запуска на любом оборудовании.

Эволюция и упадок

В 2010-х годах Hadoop MapReduce доминировал в области обработки больших данных. Однако у модели были существенные недостатки:

В середине 2010-х годов появились альтернативы: Apache Spark (вычисления в памяти), Apache Flink (потоковая обработка), Apache Hive (SQL-подобный интерфейс поверх MapReduce). К 2020 году Spark стал де-факто стандартом для пакетной обработки, вытеснив MapReduce во многих сценариях. Тем не менее, Hadoop MapReduce остаётся важной исторической вехой и используется в унаследованных системах.

Архитектура и принцип работы

Компоненты кластера

Кластер Hadoop MapReduce состоит из двух основных типов узлов:

В более поздних версиях Hadoop (2.x и 3.x) JobTracker был заменён на YARN (Yet Another Resource Negotiator), который разделил функции управления ресурсами и выполнения заданий. Однако базовая модель MapReduce осталась неизменной.

Фазы выполнения

Задание MapReduce состоит из двух основных фаз:

  1. Фаза Map (Отображение):
  1. Фаза Reduce (Свёртка):

Пример: подсчёт слов

Классический пример — подсчёт количества вхождений каждого слова в тексте.

Ключевые особенности

Отказоустойчивость

MapReduce спроектирован для работы на ненадёжном оборудовании. Если TaskTracker выходит из строя, JobTracker (или YARN) перезапускает все задачи, выполнявшиеся на этом узле, на других узлах. Если узел с промежуточными данными map-задачи выходит из строя до завершения reduce-фазы, map-задача перезапускается на другом узле. Это гарантирует завершение задания даже при массовых сбоях.

Локализация данных

MapReduce использует принцип «перемещать вычисления, а не данные». JobTracker старается запускать map-задачи на тех узлах, где физически хранятся обрабатываемые блоки данных (информация о расположении блоков берётся из HDFS). Это минимизирует сетевой трафик и ускоряет выполнение.

Масштабируемость

Модель позволяет линейно наращивать производительность путём добавления новых узлов. Теоретически кластер может содержать десятки тысяч узлов. Однако на практике производительность часто ограничивается узким местом shuffle-фазы и пропускной способностью сети.

Критика и ограничения

Применение

Несмотря на вытеснение Spark-ом, Hadoop MapReduce продолжает использоваться в следующих сценариях:

Влияние на индустрию

MapReduce стал первой широко распространённой моделью программирования для больших данных, которая сделала распределённые вычисления доступными для обычных разработчиков. Он вдохновил создание целой экосистемы инструментов (Apache Hive, Apache Pig, Apache HBase, Apache Spark) и заложил основы для современных платформ обработки данных. Без MapReduce развитие таких технологий, как облачные вычисления, потоковая обработка и NoSQL-базы данных, было бы значительно менее интенсивным.

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →