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

Hadoop

Hadoop — это свободно распространяемый программный фреймворк с открытым исходным кодом, предназначенный для распределённого хранения и обработки больших объёмов данных (Big Data) на кластерах из стандартного оборудования. Разработан на языке Java в рамках проекта Apache Software Foundation. Ключевой особенностью Hadoop является способность надёжно и отказоустойчиво обрабатывать данные, предоставляя единую модель программирования, при этом скрывая от разработчика сложности распределённых систем, такие как параллелизм, репликация данных и обработка сбоев.

История

Исходной предпосылкой для создания Hadoop стали потребности компании Yahoo! в середине 2000-х годов, когда объём собираемых данных (например, индексов поисковых систем и логов пользовательской активности) превысил возможности традиционных реляционных баз данных и однопроцессорных систем. В то время Yahoo! активно использовала распределённую файловую систему Google File System (GFS) и модель программирования MapReduce, описанные Google в публичных научных статьях (2003 и 2004 годы). Разработчики Yahoo! под руководством Дугласа Каттинга (Doug Cutting) решили реализовать аналогичную систему с открытым кодом.

Название «Hadoop» происходит от имени плюшевого слона, принадлежавшего сыну Каттинга. Первоначально проект входил в состав более известного на тот момент фреймворка Apache Nutch (для поисковой индексации), но в 2006 году был выделен в самостоятельный подпроект, а в 2008 году стал полноценным проектом верхнего уровня Apache. В том же 2008 году Yahoo! объявила о переводе своего поискового индекса на кластер из 10000 процессорных ядер под управлением Hadoop, что стало первой масштабной промышленной эксплуатацией технологии. К 2010-м годам Hadoop стал де-факто стандартом для построения корпоративных озер данных (Data Lakes).

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

Архитектура Hadoop исторически состояла из двух ключевых слоёв: системы хранения (файловой системы) и системы обработки (фреймворк для параллельных вычислений). В современном виде экосистема значительно расширилась, но базовыми компонентами остаются:

Hadoop Distributed File System (HDFS)

HDFS (Распределённая файловая система Hadoop) — это основная система хранения. Она спроектирована для развёртывания на недорогих серверах (commodity hardware) и обеспечивает высокую пропускную способность доступа к данным, что критично для пакетной обработки.

MapReduce

MapReduce — это модель программирования и среда выполнения для распределённой обработки данных. Разработчик пишет две функции: «Map» (отображение), которая преобразует входные пары «ключ-значение» в промежуточные, и «Reduce» (свёртка), агрегирующая результаты по ключу. Выполнение этих операций на всём кластере происходит автоматически:

  1. Фреймворк разбивает входные данные на сплиты (чаще всего совпадающие с блоками HDFS).
  2. На каждом узле запускаются «воркеры» (контейнеры задач Map), обрабатывающие свой сплит.
  3. После завершения Map-фазы результаты сортируются и перемещаются (shuffle) на узлы, выполняющие Reduce.
  4. Фаза Reduce агрегирует данные и пишет результат.

MapReduce эффективен для пакетной обработки (ETL-задачи, построение индексных структур, анализ журналов), но обладает высокой задержкой запуска (сотни миллисекунд — секунды), что делает его непригодным для интерактивной аналитики. С 2010-х годов эта модель постепенно вытесняется более гибкими и производительными движками, такими как Apache Spark.

YARN (Yet Another Resource Negotiator)

YARN — это платформа управления ресурсами, введённая в Hadoop 2 (2012 год). Она отделила функционал управления кластером (распределение процессорных ядер и оперативной памяти) от вычислительного фреймворка (MapReduce). Благодаря этому на одном кластере HDFS могут параллельно работать различные приложения: MapReduce, Spark, Apache Flink, Apache HBase и другие. YARN состоит из глобального менеджера ресурсов (ResourceManager), локального менеджера (NodeManager) на каждом узле и компонента ApplicationMaster для каждого приложения.

Экосистема

Со временем вокруг Hadoop сформировалась обширная экосистема связанных проектов. Наиболее известные из них:

Применение

Области применения Hadoop включают:

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

Преимущества и недостатки

Преимущества

Недостатки

Современное состояние

К концу 2010-х годов классический Adobe Hadoop («слон») перестал рассматриваться как единственное или обязательное решение для работы с большими данными. Всё больше компаний переходят к гибридной архитектуре, где HDFS выступает лишь в роли холодного хранилища, а основные вычисления выполняются Apache Spark или Apache Flink в режиме «на лету». Крупные поставщики (Cloudera, Hortonworks — до их объединения, MapR) выпускали коммерческие дистрибутивы, включающие десятки дополнительных пакетов и патчей. В 2019 году компании Cloudera и Hortonworks объединились под брендом Cloudera, сохранив модельную линию дистрибутивов CDH/HDP.

Hadoop остаётся востребованным в организациях, имеющих большой объём накопленных данных и традиционную инфраструктуру, построенную на его компонентах. Однако для новых проектов всё чаще выбирают облачные объектные хранилища (Amazon S3, Google Cloud Storage) в сочетании с универсальными вычислительными движками типа Spark, которые могут работать непосредственно в этих хранилищах.

Источники

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

На главную BFOmetr →