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

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
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru