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

Apache Hadoop

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

История

Разработка Hadoop началась в 2005 году в компании Yahoo! под руководством Дага Каттинга (Doug Cutting) и Майка Каффарелла (Mike Cafarella). Проект был вдохновлён двумя публикациями Google: файловой системой Google File System (GFS, 2003) и моделью программирования MapReduce (2004). Каттинг, ранее работавший над проектом поисковой системы Nutch, решил реализовать эти идеи в виде открытого фреймворка.

Название «Hadoop» было дано в честь игрушечного слона сына Каттинга. Первая версия (0.1.0) вышла в апреле 2006 года. В 2008 году Hadoop стал проектом верхнего уровня Apache Software Foundation. Ключевым моментом стало установление рекорда по скорости сортировки 1 терабайта данных на кластере из 910 узлов — время составило 209 секунд, что подтвердило промышленную пригодность технологии.

В 2011 году была выпущена версия 1.0.0. Однако архитектура Hadoop 1.x имела ограничения: единая точка отказа (NameNode) и жёсткая привязка MapReduce к управлению ресурсами. Это привело к созданию Hadoop 2.x (2012), где появился YARN (Yet Another Resource Negotiator), отделяющий управление ресурсами от вычислительной модели. В 2017 году вышла версия 3.x, которая улучшила производительность, добавила поддержку эластичных вычислений и erasure coding для экономии места.

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

Hadoop состоит из нескольких ключевых модулей, которые работают совместно:

Hadoop Distributed File System (HDFS)

HDFS — распределённая файловая система, спроектированная для хранения файлов очень большого размера (от гигабайт до петабайт) на кластере. Данные разбиваются на блоки (по умолчанию 128 МБ в Hadoop 2.x и 3.x) и реплицируются на разные узлы (обычно 3 копии) для обеспечения отказоустойчивости.

Архитектура HDFS — «главный-подчинённый» (master-slave):

YARN (Yet Another Resource Negotiator)

YARN — система управления ресурсами кластера и планирования заданий. Появилась в Hadoop 2.x для разделения функций управления ресурсами и выполнения вычислений. Позволяет запускать различные вычислительные фреймворки (MapReduce, Spark, Tez, Flink) на одном кластере.

Компоненты YARN:

MapReduce

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

В Hadoop 2.x и 3.x MapReduce может работать как одно из приложений поверх YARN. Однако в современных проектах его часто заменяют более эффективными инструментами (Apache Spark).

Hadoop Common

Набор общих библиотек и утилит (например, для работы с файловой системой, сериализации, конфигурации), необходимых для работы всех модулей Hadoop.

Классификация и версии

Основные версии Hadoop:

ВерсияГод выходаКлючевые особенности
1.x2011Базовая архитектура с HDFS и MapReduce, единый NameNode, отсутствие YARN
2.x2012Введение YARN, поддержка нескольких вычислительных фреймворков, Standby NameNode
3.x2017Erasure coding (снижение накладных расходов на репликацию), поддержка контейнеров (Docker), улучшенная производительность, удаление устаревших API

Также существуют дистрибутивы Hadoop от коммерческих вендоров (например, Cloudera, Hortonworks, MapR), которые добавляют свои инструменты управления и мониторинга. В 2019 году Cloudera и Hortonworks объединились, создав единую платформу Cloudera Data Platform (CDP).

Применение

Hadoop широко используется в областях, где требуется обработка больших объёмов неструктурированных или слабоструктурированных данных:

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

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

Недостатки

Интересные факты

Критика

Основные критические замечания касаются сложности эксплуатации и относительно низкой производительности по сравнению с более новыми решениями. MapReduce, как модель, требует написания большого количества кода для простых операций, что привело к появлению более удобных инструментов (Hive, Pig, Spark). Кроме того, архитектура HDFS с единым NameNode остаётся узким местом, хотя в Hadoop 3.x были предприняты шаги по улучшению (например, поддержка нескольких NameNode через Federation).

Источники

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

На главную BFOmetr →