Apache Airflow 2/3. Установка с использованием Docker

Apache Airflow - свободное программное обеспечение, родившееся внутри компании Airbnb для управления многочисленными и разветвленными рабочими процессами.
Эта статья про установку Apache Airflow 2 с использованием Docker. Обращаю внимание, что в данном мануале рассматривается стандартная установка приложения с CeleryExecutor. Модификацию yaml под LocalExecutor возможно опишу в последующих статьях.
Статья разделена на 3 части:
- Часть 1/3: Apache Airflow. Установка и первые шаги.
- Часть 2/3: Apache Airflow. Установка с использованием Docker
- Часть 3/3: Apache Airflow. Разработка простого DAG
Полезные ссылки
1. Перед началом работы
Предполагаю, что у вас имеются минимальные навыки работы с командной строкой Docker. Если есть вопросы к этой части, то, возможно, вам необходимо ознакомиться со статьей Использование Docker для разработки на Python
На основании собственного опыта замечу, что некоторые шероховатости в установке становятся более гладкими, если вы используете последние стабильные версии продуктов. Версии docker и docker-compose, которые вы устанавливаете через apt из стандартного репозитория Ubuntu для наших целей не подходят.
Для установки нам понадобятся:
- Docker Engine
- Docker Compose
2. Устанавливаем Docker
Находим целевой дистрибутив операционной системы на странице https://docs.docker.com/engine/install/, в нашем случае Ubutnu, изучаем возможные способы установки. В моем случае я пошел по пути описанному в разделе Install using the convenience script.
Сначала необходимо удалить версии установленные через apt. Если произойдет ошибка в связи с тем, что какой-то пакет не установлен, на это можно не обращать внимания.
sudo apt-get remove docker docker-engine docker.io containerd runc
# Загрузка скрипта установки
curl -fsSL https://get.docker.com -o get-docker.sh
# Запуск скрипта
sudo sh get-docker.sh
Docker установлен.
3. Устанавливаем docker-compose
Docker Compose - это инструмент, позволяющий скомпоновать многоконтейнерное приложение использующее несколько исходных образов. Согласно документации Apache Airflow 2 минимальная версия docker-compose == 1.27.0
На момент написания статьи в репозитории Ubuntu находится версия 1.25 с помощью которой собрать Airflow не получится (проверено). Установку производим по документации: https://docs.docker.com/compose/install/.
Установка пакета docker-compose:
# Загрузка
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# Устанавливаем права на выполнение
sudo chmod +x /usr/local/bin/docker-compose
docker-compose установлен
4. Проверяем Docker
~$ docker --version
Docker version 20.10.6, build 370c289
~$ docker-compose --version
docker-compose version 1.29.2, build 5becea4c
С версиями все ОК, можно идти дальше.
5. Установка Apache Airflow 2
Сначала создаем каталог для Airflow (для краткости у меня air) и одновременно вложенные папки dags, logs и plugins:
# Готовим окружение
mkdir -p air/{dags,logs,plugins}
cd air
echo -e "AIRFLOW_UID=$(id -u)\nAIRFLOW_GID=0" > .env
# Загрузка конфигурационного файkа для docker-compose
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.1.0/docker-compose.yaml'
Инициализация метаданных в базе данных и создание пользователя с правами администратора:
sudo docker-compose up airflow-init
Ошибки
Если на этапе запуска docker-compose происходят ошибки, то возможны следующие причины:
- Вы забыли использовать sudo
- Возможно не запущен docker, сделайте
sudo systemctl start docker.service
- Версия docker-compose < 1.27. Проверьте
docker-compose --version
. Иногда путаницу вносит pyenv, проверьтеwhich docker-compose
На этом этапе загружены необходимые образы, выполнена установка и создан пользователь:
Login | Password |
---|---|
airflow | airflow |
6. Запуск Airflow
Здесь все очень просто:
# Для запуска в фоне используем ключ -d
sudo docker-compose up -d
После этого Airflow доступен по адресу: http://localhost:8080
Первая часть статьи описывает установку без использования Docker.