Sobes.tech
Назад к вопросам
Junior — Middle
53

Можно ли объяснить, что представляет собой Apache Airflow и как он используется для оркестрации рабочих процессов?

Компании, где спрашивали
Positive TechnologiesPositive Technologies

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

Apache Airflow — это инструмент для описания, планирования и контроля выполнения рабочих процессов как набора задач. Он помогает автоматизировать ETL/ELT, загрузки данных, отчёты и другие пайплайны с зависимостями. Важная идея: workflow задаётся как код, а не как набор ручных запусков.

Определение:

Apache Airflow — это система оркестрации рабочих процессов, в которой пайплайн описывается как DAG (Directed Acyclic Graph, ориентированный ациклический граф). Узлы графа — это задачи, а рёбра — зависимости между ними. Airflow отвечает за запуск задач в нужном порядке, повторные попытки, расписание, мониторинг и логирование.

Иными словами, Airflow не выполняет саму бизнес-логику задач, а управляет тем, когда и в какой последовательности эти задачи должны запускаться.

Пример использования:

Типичный сценарий — ежедневный ETL-процесс: сначала загрузить данные из источника, затем очистить их, после этого загрузить в DWH и в конце отправить уведомление об успехе или ошибке.

from airflow import DAG
from airflow.operators.python import PythonOperator
from datetime import datetime

def extract():
    print("Extract data")

def transform():
    print("Transform data")

def load():
    print("Load data")

with DAG(
    dag_id="daily_etl",
    start_date=datetime(2024, 1, 1),
    schedule="@daily",
    catchup=False,
) as dag:
    t1 = PythonOperator(task_id="extract", python_callable=extract)
    t2 = PythonOperator(task_id="transform", python_callable=transform)
    t3 = PythonOperator(task_id="load", python_callable=load)

    t1 >> t2 >> t3

В этом примере Airflow каждый день создаёт запуск DAG, выполняет extract, затем transform, затем load, соблюдая зависимости между задачами.

Пояснение кода:

Код показывает минимальный DAG в Airflow.

  1. Импортируется DAG — контейнер для описания пайплайна.
  2. PythonOperator создаёт задачи, которые вызывают обычные Python-функции.
  3. extract, transform, load — три независимые функции, каждая представляет шаг процесса.
  4. В with DAG(...) as dag: задаются параметры пайплайна:
    • dag_id — имя DAG;
    • start_date — дата, с которой Airflow может планировать запуски;
    • schedule — расписание;
    • catchup=False — не запускать пропущенные интервалы задним числом.
  5. Затем создаются три задачи t1, t2, t3.
  6. Выражение t1 >> t2 >> t3 задаёт порядок выполнения: сначала extract, потом transform, потом load.

Если код не использовать, пример можно объяснить так: Airflow видит пайплайн как цепочку зависимых шагов, запускает их по расписанию, следит за статусами и позволяет быстро понять, на каком этапе произошёл сбой.

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

  • Airflow нужен для оркестрации, то есть управления порядком и расписанием задач.
  • Пайплайны в Airflow описываются как DAG, где задачи связаны зависимостями.
  • Airflow сам не заменяет бизнес-логику задач, а координирует их выполнение.
  • Полезен для ETL/ELT, батч-обработки, отчётности, интеграций и автоматических проверок.
  • Даёт мониторинг, логи, ретраи и управление ошибками.
  • Рабочие процессы в Airflow удобно хранить и версионировать как код.