Ответ
Apache Airflow — это open-source платформа для программного создания, планирования и мониторинга сложных конвейеров обработки данных (workflows).
Ключевая идея Airflow — «Workflows as Code» (конвейеры как код). Это позволяет версионировать, тестировать и совместно работать над потоками данных так же, как с обычным кодом.
Основные компоненты и концепции:
- DAG (Directed Acyclic Graph): Направленный ациклический граф. Это Python-скрипт, который определяет структуру конвейера: какие задачи выполнять и в какой последовательности.
- Операторы (
Operators
): Атомарные единицы работы. Существуют готовые операторы для множества систем (BashOperator
,PythonOperator
,PostgresOperator
) и возможность создавать свои. - Планировщик (
Scheduler
): Демон, который отслеживает состояние DAG'ов и запускает задачи по расписанию или триггеру. - Веб-интерфейс (
Web UI
): Инструмент для визуализации графов, мониторинга выполнения задач и управления конвейерами.
Простой пример DAG:
from airflow.models.dag import DAG
from airflow.operators.bash import BashOperator
from datetime import datetime
with DAG(
dag_id="simple_bash_dag",
description="Простой пример DAG с Bash-командой",
start_date=datetime(2023, 1, 1),
schedule_interval="@daily",
catchup=False
) as dag:
# Задача, которая выполняет команду 'echo'
task_hello = BashOperator(
task_id="print_hello",
bash_command="echo 'Hello from Airflow!'"
)
Сценарии применения:
- ETL/ELT процессы (извлечение, преобразование и загрузка данных).
- Обучение и развертывание моделей машинного обучения (MLOps).
- Автоматизация генерации отчетов.
- Резервное копирование и другие инфраструктурные задачи.