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):
- NameNode (главный узел) — хранит метаданные файловой системы: имена файлов, структуру каталогов, информацию о расположении блоков. Является критической точкой — при его отказе кластер становится недоступен. В Hadoop 2.x и 3.x добавлена поддержка резервного NameNode (Standby NameNode) через Quorum Journal Manager.
- DataNode (рабочие узлы) — хранят фактические данные (блоки) и выполняют операции чтения/записи по запросу клиентов или NameNode.
YARN (Yet Another Resource Negotiator)
YARN — система управления ресурсами кластера и планирования заданий. Появилась в Hadoop 2.x для разделения функций управления ресурсами и выполнения вычислений. Позволяет запускать различные вычислительные фреймворки (MapReduce, Spark, Tez, Flink) на одном кластере.
Компоненты YARN:
- ResourceManager (главный) — управляет распределением ресурсов (память, CPU) между приложениями.
- NodeManager (на каждом узле) — отвечает за мониторинг ресурсов узла и управление контейнерами (изолированными средами выполнения).
- ApplicationMaster — создаётся для каждого приложения и координирует его выполнение, запрашивая ресурсы у ResourceManager.
MapReduce
MapReduce — модель программирования и вычислительная парадигма для параллельной обработки данных. Задача разбивается на две фазы:
- Map — фильтрация и преобразование входных данных в набор пар «ключ-значение».
- Reduce — агрегация и суммирование результатов Map.
В Hadoop 2.x и 3.x MapReduce может работать как одно из приложений поверх YARN. Однако в современных проектах его часто заменяют более эффективными инструментами (Apache Spark).
Hadoop Common
Набор общих библиотек и утилит (например, для работы с файловой системой, сериализации, конфигурации), необходимых для работы всех модулей Hadoop.
Классификация и версии
Основные версии Hadoop:
| Версия | Год выхода | Ключевые особенности |
|---|---|---|
| 1.x | 2011 | Базовая архитектура с HDFS и MapReduce, единый NameNode, отсутствие YARN |
| 2.x | 2012 | Введение YARN, поддержка нескольких вычислительных фреймворков, Standby NameNode |
| 3.x | 2017 | Erasure coding (снижение накладных расходов на репликацию), поддержка контейнеров (Docker), улучшенная производительность, удаление устаревших API |
Также существуют дистрибутивы Hadoop от коммерческих вендоров (например, Cloudera, Hortonworks, MapR), которые добавляют свои инструменты управления и мониторинга. В 2019 году Cloudera и Hortonworks объединились, создав единую платформу Cloudera Data Platform (CDP).
Применение
Hadoop широко используется в областях, где требуется обработка больших объёмов неструктурированных или слабоструктурированных данных:
- Логирование и анализ событий — сбор и анализ логов веб-серверов, приложений, сетевых устройств (например, для мониторинга безопасности или производительности).
- Обработка данных в реальном времени — в сочетании с Apache Kafka, Apache Storm или Apache Spark Streaming для потоковой обработки.
- Научные исследования — биоинформатика (анализ геномов), астрономия (обработка данных телескопов), физика высоких энергий.
- Рекомендательные системы — построение моделей на основе истории покупок, просмотров, кликов.
- ETL-процессы (Extract, Transform, Load) — загрузка, очистка и преобразование данных перед загрузкой в хранилища данных (например, Apache Hive, Apache HBase).
- Машинное обучение — обучение моделей на больших наборах данных с использованием Apache Spark MLlib или Mahout.
Преимущества и недостатки
Преимущества
- Масштабируемость — добавление узлов увеличивает как вычислительную мощность, так и объём хранилища.
- Отказоустойчивость — репликация данных и автоматическое восстановление после сбоев узлов.
- Низкая стоимость — работает на стандартном оборудовании, не требует специализированных серверов.
- Открытый исходный код — бесплатное использование, активное сообщество, возможность модификации.
- Поддержка различных форматов данных — текст, CSV, JSON, Avro, Parquet, ORC.
Недостатки
- Сложность настройки и администрирования — требует квалифицированных специалистов (DevOps, администраторов Hadoop).
- Высокая задержка — HDFS и MapReduce не подходят для операций, требующих низкой задержки (например, транзакционные системы).
- Единая точка отказа в NameNode — хотя в Hadoop 2.x и 3.x есть резервирование, полное восстановление может быть сложным.
- Неэффективность для малых объёмов данных — накладные расходы на распределение и репликацию не оправданы для небольших наборов.
- Проблемы с производительностью при большом количестве мелких файлов — NameNode хранит метаданные в памяти, и тысячи мелких файлов могут привести к её исчерпанию.
Интересные факты
- Логотипом Hadoop является слон, а многие компоненты проекта названы в честь слонов или животных: HBase (слон), ZooKeeper (смотритель зоопарка), Pig (свинья), Hive (улей).
- В 2010 году Facebook (организация Meta признана экстремистской и запрещена в РФ) использовал Hadoop для анализа данных о 500 миллионах пользователей, что стало одним из первых крупных промышленных внедрений.
- Hadoop является основой для многих современных платформ Big Data, включая Apache Spark, Apache Hive, Apache HBase, Apache Impala, Apache Presto.
- В 2014 году компания Yahoo! объявила, что её кластер Hadoop состоит из более чем 40 000 узлов и обрабатывает более 100 петабайт данных.
Критика
Основные критические замечания касаются сложности эксплуатации и относительно низкой производительности по сравнению с более новыми решениями. MapReduce, как модель, требует написания большого количества кода для простых операций, что привело к появлению более удобных инструментов (Hive, Pig, Spark). Кроме того, архитектура HDFS с единым NameNode остаётся узким местом, хотя в Hadoop 3.x были предприняты шаги по улучшению (например, поддержка нескольких NameNode через Federation).
Источники
- Apache Hadoop Official Documentation
- White, T. (2015). Hadoop: The Definitive Guide. O'Reilly Media.
- Lam, C. (2010). Hadoop in Action. Manning Publications.
- Dean, J., Ghemawat, S. (2004). MapReduce: Simplified Data Processing on Large Clusters.
- Ghemawat, S., Gobioff, H., Leung, S.-T. (2003). The Google File System.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →