Apache Hadoop — фреймворк распределённой обработки данных¶
Apache Hadoop — открытый программный фреймворк для распределённого хранения и обработки больших объёмов данных на кластерах из обычного аппаратного обеспечения. Основан на модели MapReduce, разработанной в Google, и обеспечивает отказоустойчивое хранение файлов и параллельное выполнение вычислений над ними.
¶История
Разработка Hadoop началась в 2003–2004 годах в компании Yahoo! на основе идей, описанных в публикациях Google о файловой системе Google File System (GFS) и модели вычислений MapReduce. Первые версии использовались Yahoo! для индексации поискового трафика.
В 2006 году проект был выделен в отдельное направление Apache Software Foundation и получил название в честь игрушечного слоника персонажа Эрика Реймонда. В 2008 году Hadoop стал проектом уровня Apache, а к 2009 году на его основе работали крупнейшие кластеры в индустрии — до 10 000 узлов.
¶Архитектура
¶Hadoop Distributed File System (HDFS)
HDFS — распределённая файловая система, предназначенная для хранения больших файлов (обычно от гигабайтов до терабайтов) с высокой пропускной способностью потокового чтения. Файл разбивается на блоки фиксированного размера (по умолчанию 128 МБ), каждый блок реплицируется на несколько узлов кластера (по умолчанию — три копии).
Архитектура HDFS включает два типа узлов:
- NameNode — узел, хранящий метаданные файловой системы: дерево каталогов, список файлов, карту распределения блоков по дата-нодам.
- DataNode — рабочие узлы, непосредственно хранящие блоки данных.
При выходе из строя дата-ноды NameNode обнаруживает потерю реплик через механизм «сердцебиения» (heartbeat) и инициирует восстановление недостающих копий на другие узлы.
¶MapReduce
MapReduce — модель параллельной обработки данных, в которой задача разбивается на две фазы:
- Map — каждая входная запись независимо преобразуется в пары «ключ-значение».
- Reduce — значения, сгруппированные по ключу, сводятся к итоговому результату.
Промежуточные данные передаются по сети и сортируются, что позволяет обрабатывать данные, не помещающиеся в память одного узла.
¶YARN
В версии Hadoop 2.0 (2013 год) была введена подсистема планирования ресурсов YARN (Yet Another Resource Negotiator), отделившая управление кластером от модели вычислений. YARN распределяет процессорную память и процессорное время между приложениями, что позволило запускать на одном кластере не только MapReduce, но и другие фреймворки — Spark, Flink, Tez.
¶Экосистема
Вокруг ядра Hadoop сформировалась обширная экосистема компонентов:
| Компонент | Назначение |
|---|---|
| Hive | SQL-интерфейс поверх HDFS и MapReduce |
| HBase | Распределённая NoSQL-база данных |
| Pig | Язык потоковой обработки данных |
| ZooKeeper | Координация распределённых служб |
| Sqoop | Перенос данных между HDFS и реляционными СУБД |
| Flume | Сбор логов и потоковых данных |
| Oozie | Планирование и оркестрация задач |
¶Применение
Hadoop применяется в задачах, где объём данных превышает возможности одного сервера:
- хранение и обработка логов веб-серверов и приложений;
- построение поисковых индексов;
- аналитика поведения пользователей;
- обработка данных в сфере телекоммуникаций, финансах, здравоохранении.
В России Hadoop-совместимые решения используются в крупных банках, телекоммуникационных операторах и государственных информационных системах. Развиваются отечественные дистрибутивы на основе Hadoop и HDFS-совместимых хранилищ — в частности, решения на базе проекта AltLinux и коммерческие продукты российских вендоров, ориентированные на импортозамещение в сфере больших данных.
¶Ограничения
Hadoop оптимизирован для пакетной обработки больших объёмов данных с высокой пропускной способностью, но демонстрирует высокую задержку при запросах к небольшим объёмам данных. Модель MapReduce требует промежуточной записи промежуточных результатов на диск, что снижает производительность по сравнению с алгоритмами, выполняющими вычисления в памяти — в частности, Apache Spark. Для интерактивной аналитики Hadoop часто заменяется или дополняется более быстрыми системами.
Исторически сложилось, что Hadoop стал основой индустрии больших данных, однако с 2010-х годов его позиции постепенно занимают облачные объектные хранилища и вычислительные платформы, не требующие самостоятельного администрирования кластера.
Источники:
- Apache Software Foundation. Apache Hadoop Documentation.
- White T. Hadoop: The Definitive Guide. O'Reilly Media.
- Shvachko K., Huang H., Radia S., Chansler R. The Hadoop Distributed File System // IEEE MSST, 2010.
- Dean J., Ghemawat S. MapReduce: Simplified Data Processing on Large Clusters // OSDI, 2004.
