Ответ
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) для масштабирования.