Учебный стенд Apache Airflow
Стенд содержит Airflow 2.9.2, учебную PostgreSQL и девять DAG. Он нужен для знакомства с инструментом: запустить пример, изменить его и посмотреть результат. Для работы понадобятся Docker с Compose, браузер и знания Python, pandas и SQL.
Запуск
Из корня репозитория:
cd airflow-docker
docker compose up -d --build
Команды подходят для Linux и PowerShell в Windows. При первом запуске Docker собирает образ, поднимает две БД, выполняет airflow-init, затем запускает webserver и scheduler. Инициализация создает учетную запись и подключение postgres_training.
Проверьте состояние:
docker compose ps -a
docker compose logs airflow-init
Завершение airflow-init с кодом 0 нормально: это разовая подготовка. Остальные четыре сервиса должны работать. Откройте http://localhost:8080 и войдите как admin / admin.
| Сервис | Адрес с компьютера | База | Пользователь / пароль |
|---|---|---|---|
| Airflow UI | http://localhost:8080 |
- | admin / admin |
| Учебная PostgreSQL | localhost:5432 |
training |
student / student |
| Метаданные Airflow | localhost:5434 |
airflow |
airflow / airflow |
В задачах используется адрес postgres-training:5432: это имя сервиса внутри Docker. Базу метаданных для упражнений не используйте. Учебные пароли заданы в Compose; для публичного сервера такая конфигурация не подходит.
Прохождение практики
Откройте задания. Их восемь блоков проходят последовательно; перед каждым указаны нужные главы учебника, исходные файлы и настройки.
Основные задания внутри блока сохраняют изменения предыдущих шагов. Дополнительные находятся в конце блока и помечены "По желанию"; их можно пропустить. Для завершения практики достаточно основных заданий и проверки их результатов.
| Блок | DAG |
|---|---|
| Первый DAG | hello_world_dag |
| SQL и подключения | sql_basic_dag |
| Работа с файлами | file_operations_dag |
| Загрузка CSV и DQ | csv_to_postgres, csv_to_postgres_dq |
| Разбор ETL | data_processing_dag |
| Ветвление | branching_dag |
| Ошибки и повторы | error_handling_dag |
| Пулы, XCom и TaskGroup | resource_management_dag |
Описание поведения исходных примеров находится в справочнике DAG. Почта нужна только для отдельного задания по желанию; SMTP в стенде не настроен.
Файлы и данные
airflow-docker/
├── docker-compose.yml # Сервисы, порты и учебные подключения
├── Dockerfile # Airflow 2.9.2
├── requirements.txt # Дополнительные Python-пакеты
├── dags/ # Девять учебных DAG
├── data/input/ # Входные CSV и данные упражнений
├── data/output/ # Результаты задач
└── init-postgres.sql # Начальная подготовка учебной БД
dags/ и data/ смонтированы в контейнеры как /opt/airflow/dags/ и /opt/airflow/data/. Правки DAG подхватываются планировщиком; перед новым запуском дождитесь обновления вкладки Code. Резервные копии Python-файлов храните вне dags/, чтобы не создать два определения одного dag_id.
Таблицы PostgreSQL сохраняются в именованных томах pg_data и pgmeta. Обычная остановка их не удаляет. Логи Airflow хранятся внутри контейнеров; важные логи опыта сохраните до удаления контейнеров.
Для SQL-запросов из заданий:
docker compose exec postgres-training psql -U student -d training
Выход из psql - \q. Готовое подключение Airflow можно проверить командой:
docker compose exec airflow-webserver airflow connections get postgres_training
Управление и поиск ошибок
Все команды ниже выполняются из airflow-docker.
docker compose exec airflow-webserver airflow version
docker compose exec airflow-webserver airflow dags list
docker compose exec airflow-webserver airflow dags list-import-errors
docker compose logs airflow-scheduler
docker compose logs airflow-webserver
Если DAG не появился, проверьте путь файла и ошибки импорта. Если задача упала, сначала откройте ее лог в UI. При ошибке подключения проверьте docker compose ps и Conn Id задачи. Задачи из блока 8 ждут, пока вы создадите указанный в задании пул.
Остановка с сохранением данных:
docker compose down
Повторный запуск - docker compose up -d. Для полного сброса обеих БД используйте docker compose down -v: эта команда удалит учебные таблицы, историю запусков и настройки Airflow в томах. Файлы в data/ останутся.
Для авторов курса
План обновления практики сохраняет согласованные решения, разбор исходных заданий и результаты проверок.