8-шаговое руководство протестировано на Windows, Ubuntu и Mac OS X

В этой статье мы рассмотрим локальную установку Apache Airflow с помощью Docker. Я объясню каждый шаг достаточно подробно, чтобы вы воспроизвели его без ошибок.

Если что-то пойдет не так, сообщите мне, чтобы я мог обновить содержание и сохранить эту статью как можно дольше 🙏

1. Проверьте установку Docker

Во-первых, убедитесь, что Docker правильно установлен на вашем компьютере.

Для этого вы можете ввести следующие две команды:

docker --version
Docker version 20.10.12, build e91ed57
docker-compose --version
Docker Compose version v2.2.3

Вам потребуется как минимум Docker Compose v1.29+.

Если это не так, проще всего установить Docker Desktop (у которого тоже удобный графический интерфейс) и установить версию, соответствующую вашей операционной системе.

Я протестировал предложенные манипуляции на Windows 10, Ubuntu 20.04 и Mac OS X Montery.

2. Получите рецепт докера Apache Airflow

Получите доступ к сайту документации Apache Airflow и селектору версии вверху. Затем выберите подходящую версию и найдите файл для загрузки в разделе Быстрый старт › Запуск Airflow в разделе Docker.

Если вам нужно установить Apache Airflow 2.4.1:

curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.4.1/docker-compose.yaml'

"У меня нет программного обеспечения curl в Windows".

Возьмите предыдущую ссылку, поместите ее в браузер и сохраните содержимое в файле 'docker-compose.yaml'.

3. Создайте соответствующую структуру папок/файлов

Если ваша цель — иметь возможность разрабатывать сценарии локально, а затем развертывать их, вы синхронизируете папки из образа Docker с папками в вашей файловой системе.

Мы собираемся спланировать синхронизацию для разработки dag и плагина, и всегда полезно иметь доступ к журналам.

Вот почему в папке, которая будет содержать ваш экземпляр Apache Airflow, вы создадите эти три папки:

mkdir ./dags ./logs ./plugins

В Windows, где у вас может не быть доступа к mkdir, используйте PowerShell:

New-Item "dags" -ItemType "directory"
New-Item "logs" -ItemType "directory"
New-Item "plugins" -ItemType "directory"

Затем добавьте файл .env, который будет содержать переменные среды, используемые образом Docker:

# Ubuntu / Mac OSX
touch .env
# Windows (PowerShell)
ni .env

В этом файле необходимо настроить переменную среды с именем AIRFLOW_UID, которая соответствует UID пользователя, запускающего контейнер Docker.

Помните проблемы с управлением доступом/правами на некоторых образах Docker? Вероятно, это из-за неправильно настроенного UID.

В UNIX-подобных системах, таких как Mac OSX или GNU/Linux, это довольно просто:

echo -e "AIRFLOW_UID=$(id -u)" > .env

А вот в Windows управление пользователями сложное 🙃.

В этом случае, поскольку Windows очень либеральна, вам не нужно настраивать ее. Но взамен у вас будет небольшое предупреждающее сообщение каждый раз при запуске образа Docker: ничего серьезного.

Если вас это беспокоит, добавьте следующую строку в файл .env:

AIRFLOW_UID=50000

4. Удалите образцы DAG

Apache Airflow по умолчанию будет устанавливаться с набором потоков DAG/примеров.

Если они вам не нужны (вы уже знаете о Airflow), вам придется установить для переменной AIRFLOW__CORE__LOAD_EXAMPLES значение false вместо true в файле docker-compose.yaml файл:

5. Установите и запустите образ Docker

Теперь попросите Docker установить Apache Airflow:

docker-compose up airflow-init

Чтобы убедиться, что демон Docker снова активен, вы можете выполнить следующую команду:

docker ps

Если вы можете прочитать сообщение, похожее на приведенное выше, это означает, что вам нужно запустить приложение Docker Desktop:

error during connect: This error may indicate that the docker daemon is not running.: Get "http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/containers/json": open //./pipe/docker_engine: The specified file can't be found.

В версиях для Mac OSX и Windows 10 вы можете настроить его так, чтобы он запускался при запуске. Я не использую Docker Desktop в Ubuntu, поэтому не могу сказать наверняка…😕

Наконец, вы также можете заглянуть внутрь клиента пользовательского интерфейса Docker Desktop: если строка состояния зеленая, движок запущен и работает как положено!

Как только образ будет установлен, в дальнейшем вам понадобится только инструкция docker-compose up «как обычно».

6. Доступ к веб-приложению

Чтобы получить доступ к приложению через браузер, нажмите эту ссылку (http://localhost:8080/home) со следующими учетными данными: airflow/airflow.

Это дисплей, который у меня есть с Apache Airflow 2.4.1:

На данный момент он пуст, потому что я установил для переменной AIRFLOW__CORE__LOAD_EXAMPLES значение false в файле Docker Compose.

Если вам нужно сопоставить это контейнерное приложение с DNS на сервере, чтобы использовать Dockerized экземпляр Airflow в рабочей среде, используйте такой инструмент, как Nginx Proxy Manager.

Затем сопоставьте IP вашего сервера с доменным именем и используйте 8080 в качестве HTTP-порта: так это делается на моем сервере.

7. Добавьте и выполните DAG

Давайте представим минимальный пример, чтобы вы могли проверить, может ли Apache Airflow выполнять даги.

В папке dags создайте новый файл с именем demo.py со следующим содержимым:

Затем подождите 20 секунд и перезагрузите веб-браузер, и теперь DAG должен быть указан на домашней странице Apache Airflow:

Вы можете активировать и увидеть вывод, чтобы подтвердить, что Apache Airflow полностью функционален.

8. Доступ к приложению CLI

По умолчанию веб-сервер и оркестратор заданий активны и достаточно быстро реагируют, чтобы вы могли создавать и тестировать свои даги. Но некоторые функции недоступны через веб-клиент, и вам может потребоваться доступ к клиенту командной строки Apache Airflow.

Поскольку всем управляет Docker, вы можете получить доступ к контейнеру airflow-worker, содержащему запущенный перед вами экземпляр Airflow, с помощью Docker Composer.

Например, чтобы отобразить основную информацию о вашем экземпляре:

docker-compose run airflow-worker airflow info

Все доступные команды перечислены в документации.

Гайд закончился! Спасибо за чтение, и я надеюсь, что вы нашли его содержание полезным.

Теперь ваша очередь создавать мощные даги, сверяясь с официальной документацией или учебными пособиями, доступными в Интернете 😉



Если у вас есть какие-либо вопросы, не стесняйтесь комментировать, а если вам понравилась статья, подпишитесь на меня, и вы получите уведомление, когда я опубликую следующую.