Apache Airflow: Запуск на ПК та в хмарі – Гайд для Data Engineer | robot_dreams
Для отслеживания статуса заказа — авторизируйтесь
Введите код, который был выслан на почту Введите код с SMS, который был выслан на номер
 
Код действителен в течение 5 минут Код с sms действителен в течение 5 минут
Вы уверены, что хотите выйти?
Сеанс завершен
На главную
Практика: Як запустити Apache Airflow на своєму компʼютері та в хмарі

Практика: Як запустити Apache Airflow на своєму компʼютері та в хмарі

Гайд для всіх, хто починає працювати з даними

Apache Airflow — один із найпопулярніших інструментів для автоматизації та оркестрації процесів у data engineering. З ним можна будувати складні пайплайни обробки даних у вигляді DAG (Directed Acyclic Graph), відстежувати виконання завдань і гнучко керувати залежностями між ними.

Чому це важливо? В компаніях дані надходять з різних джерел — баз даних, API, хмарних сховищ, і все це потрібно регулярно завантажувати, трансформувати й відправляти далі. 

Дата-інженерам робити це вручну або простими скриптами складно та ненадійно. З Airflow процес можна сильно покращити — і централізовано керувати робочими процесами та масштабувати їх.

У цій статті ми крок за кроком розглянемо два варіанти запуску Apache Airflow. Спершу — на власному компʼютері, щоб швидко протестувати ідеї та навчитися працювати з інструментом. Далі — в хмарі, щоб зрозуміти, як виглядає продакшн-середовище та чим воно відрізняється від локального запуску.

Передумови та вимоги

Перед запуском Apache Airflow варто підготувати робоче середовище. Це збереже вам час і допоможе уникнути поширених проблем. Перед початком потрібно мати:

  • Python (версія 3.8+) — Airflow працює поверх Python, тож він обов’язковий. Рекомендується також вміти користуватися віртуальними середовищами (venv або conda).
  • Docker і Docker Compose — не обов’язково, але значно спрощує локальний запуск і дозволяє уникнути конфліктів із залежностями.
  • Базові навички роботи з терміналом — для встановлення, запуску команд і перевірки процесів.

Мінімальні системні вимоги для локального запуску:

  • Операційна система: Linux, macOS або Windows (через WSL2).
  • ОЗП: від 4 ГБ (8 ГБ бажано, особливо для Docker).
  • Процесор: сучасний двоядерний CPU.
  • Вільний простір: щонайменше 2–3 ГБ (для образів Docker та логів).

Облікові записи в хмарних платформах:

Якщо ви плануєте запускати Airflow у хмарі, потрібно мати акаунт у вибраного провайдера:

  • Google Cloud Platform (GCP) — для роботи з Cloud Composer.
  • Amazon Web Services (AWS) — для Managed Workflows for Apache Airflow (MWAA).
  • Microsoft Azure — для запуску Airflow в Kubernetes або на віртуальних машинах.

Базових акаунтів з безплатними кредитами (у GCP чи AWS) цілком достатньо для перших експериментів.

Локальний запуск Airflow

Airflow зручно запускати як локально для навчання й тестів, так і в продакшн-середовищах. Нижче розглянемо два підходи: встановлення через pip та запуск через Docker.

Встановлення через pip/venv

Найпростіший спосіб спробувати Airflow — поставити його напряму через pip.

1. Створіть віртуальне середовище (рекомендується, щоб уникнути конфліктів):

python3 -m venv airflow-env
source airflow-env/bin/activate   # для Linux/macOS
airflow-env\Scripts\activate      # для Windows

2. Встановіть Airflow:

pip install apache-airflow

3. Ініціалізуйте базу даних Airflow:

airflow db init

4. Створіть адміністративного користувача:

airflow users create \
  --username admin \
  --firstname First \
  --lastname Last \
  --role Admin \
  --email admin@example.com

5. Запустіть вебсервер та scheduler у різних вкладках термінала:

airflow webserver --port 8080
airflow scheduler

6. Перейдіть у браузері на http://localhost:8080 та залогіньтеся.

Встановлення через Docker Compose

Другий спосіб запустити Apache Airflow на власному компʼютері — через Docker. Це зручніше, якщо не хочете вручну налаштовувати залежності й середовище. Для навчання Docker Compose зручніший, бо пропонує швидкий старт без складних конфігурацій та дозволяє легко видаляти/перезапускати середовище. Ось приклад docker-compose.yaml:

version: '3'
services:
  postgres:
    image: postgres:13
    environment:
      POSTGRES_USER: airflow
      POSTGRES_PASSWORD: airflow
      POSTGRES_DB: airflow
  webserver:
    image: apache/airflow:2.7.1
    environment:
      - AIRFLOW__CORE__EXECUTOR=LocalExecutor
      - AIRFLOW__CORE__SQL_ALCHEMY_CONN=postgresql+psycopg2://airflow:airflow@postgres/airflow
    ports:
      - "8080:8080"
    depends_on:
      - postgres
    command: webserver
  scheduler:
    image: apache/airflow:2.7.1
    depends_on:
      - postgres
    environment:
      - AIRFLOW__CORE__SQL_ALCHEMY_CONN=postgresql+psycopg2://airflow:airflow@postgres/airflow
    command: scheduler

Далі, потрібно лише запустити команду:

docker-compose up -d

Щоби перевірити, чи все працює, традиційно відкрийте http://localhost:8080 у браузері.

Створення першого DAG

Щоби перевірити, що Airflow працює, можна створити простий DAG із завданням print("Hello, Airflow!")

1. Створіть папку dags/ (якщо її ще немає).

2. Додайте файл hello_dag.py:

from datetime import datetime
from airflow import DAG
from airflow.operators.python import PythonOperator
def say_hello():
    print("Hello, Airflow!")
with DAG(
    dag_id="hello_airflow",
    start_date=datetime(2023, 1, 1),
    schedule_interval=None,   # запускати вручну
    catchup=False,
) as dag:
    task = PythonOperator(
        task_id="print_hello",
        python_callable=say_hello,
    )

3. Перезапустіть Airflow (якщо потрібно).

4. У вебінтерфейсі (http://localhost:8080) знайдіть DAG hello_airflow, увімкніть його та запустіть вручну.

5. У вкладці Logs ви побачите Hello, Airflow!.

Таким чином, ви маєте робочий Airflow локально: або у віртуальному середовищі через pip, або у відтворюваному середовищі за допомогою Docker.

Запуск Apache Airflow у хмарі

Якщо локальний запуск підходить для навчання та прототипів, то в продакшн-середовищі частіше обирають хмарні рішення. Це дозволяє масштабувати обчислення, працювати в команді та інтегруватися з іншими сервісами даних.

Вибір підходу

Є два основних способи запустити Airflow у хмарі:

1. Managed-сервіси — готові рішення від провайдерів, де інфраструктура вже налаштована. До прикладу, є Google Cloud Composer (повністю керований Airflow у GCP), AWS Managed Workflows for Apache Airflow (MWAA), та Astronomer — комерційний сервіс з додатковим функціоналом.

2. Ручний деплой — розгортання Airflow на власних віртуальних машинах чи в Kubernetes (наприклад, на GCP GKE, AWS EKS або Azure AKS). Цей варіант більш гнучкий, але вимагає більше зусиль для адміністрування.

Приклад на Google Cloud Composer

Почати розгортання Airflow у хмарі варто зі створення середовища. Розглянемо цей процес на прикладі Google Cloud Composer. 

1. Зайдіть у Google Cloud Console і далі в Composer.

2. Натисніть Create Environment.

3. Вкажіть:

  • Версію Airflow (наприклад, 2.7)
  • Регіон
  • Розмір кластера (кількість вузлів, CPU, RAM)

Через кілька хвилин середовище буде готове. Ви отримаєте посилання на вебінтерфейс Airflow.

Далі потрібно завантаження DAG у хмару.

  • У Composer DAG-и зберігаються в Google Cloud Storage (GCS).
  • Просто завантажте свій hello_dag.py в папку dags/ відповідного бакета.
  • DAG автоматично з’явиться у вебінтерфейсі Airflow.

Зрештою — потрібно налаштувати інтеграцію зі сховищем даних.

  • Якщо ви працюєте з BigQuery:

    — Створіть під’єднання в Airflow (вкладка Admin → Connections);

    — Використовуйте оператори BigQueryOperator або BigQueryInsertJobOperator.
  • Якщо це AWS S3 або інше сховище — аналогічно налаштуйте відповідні credentials та підключення.

Таким чином ви можете запускати ті самі DAG-и, що й локально, але з повною потужністю хмари.

Плюси та мінуси хмарного підходу

Розгортати Apache Airflow у хмарі складніше, порівняно з локальним середовищем, особливо у реальному продакшені. Окрім складності, цей підхід має інші позитивні та негативні нюанси.

Переваги:

➕ Автоматичне масштабування під навантаження.

➕ Вбудована інтеграція з іншими сервісами (BigQuery, S3, Pub/Sub тощо).

➕ Менше клопоту з інфраструктурою: оновлення, безпека, моніторинг.

➕ Зручність командної роботи (доступ з різних акаунтів).

Недоліки:

➖ Вартість — навіть мінімальне середовище Composer чи MWAA може коштувати десятки або сотні доларів на місяць.

➖ Залежність від провайдера — міграція між GCP/AWS/Azure може вимагати додаткових зусиль.

➖ Менша гнучкість у конфігурації (деякі параметри обмежені в managed-сервісах).

Поширені проблеми

Під час перших експериментів з Apache Airflow ви можете стикнутися з типовими труднощами. Ось кілька найпоширеніших проблем та як їх пофіксити.

Налаштування залежностей в DAG

Інколи завдання виконуються не в тому порядку або «висять» у статусі queued. Тому завжди явно задавайте залежності через оператори >> та <<.

task1 >> task2 >> task3

Також використовуйте параметр catchup=False, щоб уникнути запуску DAG-ів «з минулого». А якщо ж ви працюєте зі складними графами — додавайте теги та опис, щоб DAG залишався зрозумілим.

Доступ до вебінтерфейсу

Якщо ви працюєте локально, перевірте, що вебсервер запущений (airflow webserver) і порт 8080 вільний. Якщо зайнятий – спробуйте його змінити.

airflow webserver --port 8081

Якщо працюєте в Docker, додайте мапінг портів у docker-compose.yaml:

ports:
  - "8080:8080"

Якщо ж працюєте в хмарі, перевірте налаштування firewall/security groups. У GCP Cloud Composer доступ зазвичай іде через проксі або IAM-права.

Дебаг DAG-ів

Використовуйте вкладку Logs у вебінтерфейсі — там відображається stdout/stderr кожної задачі. Локально можна запускати таски в debug mode:

airflow tasks test <dag_id> <task_id> <execution_date>

Це допомагає перевірити логіку без запуску всього DAG-а. Якщо проблема в залежностях Python — створіть окремий requirements-файл та підключіть його до Airflow. Для складної логіки виносьте бізнес-функції в окремі модулі, щоб тестувати їх незалежно від Airflow.

Ещё статьи
Порівнюємо швидкість, якість і відповідальність за результат