Apache Airflow — система оркестрации пайплайнов данных¶
Apache Airflow — это открытая платформа (оркестратор) для программного создания, запуска и мониторинга пайплайнов обработки данных. Проект развивается под эгидой фонда Apache Software Foundation, распространяется под лицензией Apache License 2.0 и написан в основном на языке Python. В основе Airflow лежит идея описания рабочих процессов (DAG — directed acyclic graph, ациклический граф зависимостей) в виде кода, а не через графический интерфейс.
¶История
Airflow был создан в 2014 году инженерами компании Airbnb для управления регулярными задачами (ETL-пайплайнами, загрузками данных, отчётами). В 2016 году проект был передан в Apache Incubator, а в январе 2019 года получил статус топ-уровневого проекта Apache Software Foundation. С этого момента развитие ведётся сообществом, в которое входят инженеры из Airbnb, Lyft, Spotify, Pinterest, крупных российских технологических компаний и других организаций.
В 2020 году вышел Airflow 2.0 — крупнейшее обновление, которое привнесло модульную архитектуру планировщика (Scheduler), REST API для управления, улучшенную поддержку сенсоров (Sensors) и переработанную систему прав. Версия 2.4 добавила понятие «DAG-групп» (DAG Authoring UI), 2.6 — улучшенный редактор DAG в веб-интерфейсе.
¶Архитектура
Ключевые компоненты Airflow:
- Metadata Database — реляционная база данных (поддерживаются PostgreSQL, MySQL), где хранится состояние всех DAG, запусков задач, пользователей и настроек.
- Scheduler — планировщик, который периодически сканирует DAG-файлы, вычисляет расписание и запускает задачи, когда подходит время.
- Executor — компонент, определяющий, как именно выполняются задачи. Доступны режимы SequentialExecutor (последовательный, для отладки), LocalExecutor (параллельный на одном хосте), CeleryExecutor (распределённый через брокер сообщений Celery) и KubernetesExecutor (запуск каждой задачи в отдельном поде Kubernetes).
- Webserver — веб-интерфейс на базе Flask, предоставляющий визуализацию DAG, историю запусков, логи и инструменты ручного управления.
- Workers — исполнители задач, которые получают задания от планировщика и выполняют их.
¶DAG и операторы
Рабочий процесс описывается в Python-файле как DAG — набор задач с явно заданными зависимостями. Каждая задача реализуется через оператор — готовый класс, описывающий тип работы:
| Оператор | Назначение |
|---|---|
PythonOperator | Выполнение произвольной Python-функции |
BashOperator | Запуск shell-команды |
SparkSubmitOperator | Запуск Spark-задачи |
KubernetesPodOperator | Запуск контейнера в Kubernetes |
S3ToSnowflakeOperator | Перенос данных из S3 в Snowflake |
Дополнительно поддерживаются сенсоры (Sensors), которые «ждут» наступления условия (появления файла, готовности таблицы), и хуки (Hooks) — подключения к внешним системам (S3, PostgreSQL, Hadoop, Slack и другим).
Расписание задаётся через крон-подобный синтаксис, например schedule_interval="0 3 *" — ежедневно в 03:00.
¶Применение
Airflow широко используется для:
- оркестрации ETL-пайплайнов в дата-инженерии;
- регулярного пересчёта витрин данных и отчётности;
- запуска ML-пайплайнов (обучение, валидация, деплой моделей);
- управления инфраструктурными процессами (бэкапы, ротация ключей).
В российской практике Airflow применяется в финтехе, телекоме и интернет-компаниях для построения хранилищ данных. Существуют управляемые облачные сервисы на базе Airflow — Amazon Managed Workflows for Apache Airflow (MWAA), Google Cloud Composer, Yandex Managed Service for Apache Airflow.
¶Достоинства и ограничения
К сильным сторонам относятся: описание пайплайнов как кода (что даёт версионирование в Git), богатая экосистема интеграций (более 1000 пакетов в PyPI), активное сообщество и веб-интерфейс для мониторинга.
Ограничения: требовательность к реляционной БД под метаданные, сложность настройки распределённого режима, накладные расходы при большом числе DAG (тысячи файлов замедляют планировщик), а также необходимость знания Python для написания пайплайнов.
¶Альтернативы
Основными конкурентами Airflow считаются Prefect, Dagster, Luigi (от Spotify), Apache NiFi и коммерческие платформы (Apache Oozie, AWS Step Functions, Azure Data Factory).
Источники:
- Документация Apache Airflow (airflow.apache.org)
- «Data Engineering with Apache Airflow», V. Vršanský и др., Packt Publishing
- «Fundamentals of Data Engineering», J. Reis и M. Housley, O'Reilly Media
