Практика: Як запустити 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.