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
Все доступные команды перечислены в документации.
Гайд закончился! Спасибо за чтение, и я надеюсь, что вы нашли его содержание полезным.
Теперь ваша очередь создавать мощные даги, сверяясь с официальной документацией или учебными пособиями, доступными в Интернете 😉
Если у вас есть какие-либо вопросы, не стесняйтесь комментировать, а если вам понравилась статья, подпишитесь на меня, и вы получите уведомление, когда я опубликую следующую.