Что такое Apache Airflow и каковы его основные компоненты

Ответ

Apache Airflow — это open-source платформа для программного создания, планирования и мониторинга рабочих процессов (workflows). Она позволяет описывать конвейеры обработки данных в виде кода на Python.

Ключевые компоненты:

  • DAG (Directed Acyclic Graph): Направленный ациклический граф. Это Python-файл, который определяет структуру воркфлоу: какие задачи выполнять и в каком порядке.
  • Операторы (Operators): Строительные блоки DAG, определяющие одну конкретную задачу. Примеры: BashOperator (выполняет bash-команду), PythonOperator (выполняет Python-функцию), PostgresOperator (выполняет SQL-запрос).
  • Планировщик (Scheduler): Сервис, который отслеживает все DAG и запускает задачи, как только их зависимости выполнены и подошло время по расписанию.
  • Веб-сервер (Web Server): Предоставляет пользовательский интерфейс (UI) для просмотра статуса DAG, логов, ручного запуска задач и управления всей системой.

Пример простого DAG:

from airflow.models.dag import DAG
from airflow.operators.bash import BashOperator
from datetime import datetime

with DAG(
    dag_id='example_dag',
    start_date=datetime(2023, 1, 1),
    schedule_interval='@daily', # Запускать ежедневно
    catchup=False
) as dag:
    # Задача 1: вывести текущую дату
    task_print_date = BashOperator(
        task_id='print_date',
        bash_command='date'
    )

    # Задача 2: вывести сообщение
    task_say_hello = BashOperator(
        task_id='say_hello',
        bash_command='echo "Hello from Airflow!"'
    )

    # Определение порядка выполнения: task_print_date выполняется перед task_say_hello
    task_print_date >> task_say_hello

Для более сложных сценариев Airflow предоставляет механизмы вроде XComs (для обмена данными между задачами), Hooks (для взаимодействия с внешними системами) и различные Executors (Local, Celery, Kubernetes) для масштабирования.