Шаг 1 из 1

Apache Airflow использует переменную окружения AIRFLOW_HOME для назначения пути, где будут лежать логи, конфигурационные файлы, python код и прочая вспомогательная информация. По умолчанию путь ~/airflow, переопределите эту переменную, если хотите изменить путь:

export AIRFLOW_HOME=~/airflow-data

Перед началом работы необходимо инициализировать настройки, подготовить базу данных. Для этого выполните команду:

airflow db init

После успешного выполнения этой команды в директории по пути AIRFLOW_HOME будут созданы необходимые файлы. Airflow используется SQLite3 в качестве базы данных по умолчанию (файл airflow.db). Разумеется в продакшене не рекомендуется её использовать, т.к. SQLite3 ограничен SequentialExecutor (об Executor поговорим позже) и как следствие ограничение в масштабировании ваших пайплайнов.

airflow.cfg это конфигурационный файл Apache Airflow. В нём можно поменять базу данных, указать иной способ запуска задач, изменить путь до python кода и др. Если вы меняете базу, то после сохранения настроек необходимо повторно выполнить команду airflow db init, чтобы создать все необходимые таблицы в базе.

В docker-compose.yml используется контейнер с PostgreSQL. Если вы не хотите использовать docker-compose, то PostgreSQL можно запустить как отдельный контейнер с пробросом портов или установить локально. Давайте запустим PostgreSQL в изолированном контейнере. Про локальную установку и настройку можно почитать в моей шпаргалке.

Выполните команду:

docker run -d -p 6666:5432 -e POSTGRES_PASSWORD=password -e POSTGRES_USER=airflow -e POSTGRES_DB=airflow -v postgres_data_airflow:/var/lib/postgresql/data postgres:13.1

Будет создана база данных airflow и пользователь airflow с паролем password. На хост машине база будет доступна по порту 6666. Также я создаю volume, чтобы после остановки контейнера все данные были сохранены. Контейнер запускается в фоновом режиме (ключ -d).

Теперь необходимо прописать настройки в конфигурационном файле. Откройте airflow.cfg и найдите строчку с sql_alchemy_conn и executor. Присвойте им новые значения:

executor = LocalExecutor
sql_alchemy_conn = postgresql+psycopg2://airflow:password@localhost:6666/airflow

Про Executor мы более детально поговорим в следующем разделе.

А сейчас нужно повторно инициализировать базу данных командой:

airflow db init

В Airflow 2.0 появилась авторизация по умолчанию, поэтому перед запуском сервера нам необходимо создать пользователя-админа.

airflow users create \
    --username airflow \
    --firstname Airflow \
    --lastname Apache \
    --role Admin \
    --email airflow@example.com \
    --password airflow

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

airflow webserver -p 8080

Комментарии

Добрый день. Пытаюсь установить airflow на windows 10 и после установки всех пакетов и попытки выполнить airflow db init выдает ошибку - WARNING:root:OSError while attempting to symlink the latest log directory ModuleNotFoundError: No module named 'termios' подскажите как поправить? насколько я понимаю он ругается на папку установки и требует пакет, который идет только для unix систем...

Приветствую! Apache Airflow не поддерживает установку в Windows, рабочий вариант воспользоваться WSL2.

Иногда до инициализации БД надо еще доустановить библиотеку pip install SQLAlchemy==1.3.24

Друзья, кто столкнулся с ошибкой: docker: Got permission denied while trying to connect to the Docker daemon socket at unix. Решение: sudo chmod 666 /var/run/docker.sock

Адиль Привет, устанавливаю переменную окружения export AIRFLOW_HOME=~/airflow-data после переоткрытия сессии она исчезает. Это нормально, и она нужна только во время установки или она нужна на постоянной основе и ее нужно както закрепить?

Привет! Она всегда нужна, можно прописать её установку в ~/.profile или .bashrc (в зависимости от шелла), тогда при открытии шелла команда будет выполняться автоматически.

А как это все запускать после того как перезагрузил компьютер? Надо ли заново создавать пользователя и инициализировать бд еще раз?

БД инициализировать снова не нужно. Если речь про локальный компьютер, то нужно будет снова запустить веб-сервер и планировщик. Если речь про сервер, то в разделе Делой Apache Airflow есть полная инструкция подготовки production-ready решения.

А в init автор курса уже прописал airflow db init

У меня возникла проблема from wtforms.compat import string_types, text_type ModuleNotFoundError: No module named 'wtforms.compat' Решил с поощью https://stackoverflow.com/questions/69879246/no-module-named-wtforms-compat

Адиль, подскажи пожалуйста, я всё сделал по инструкции, но при повторной инициализации базы пишет что не может подключиться к базе postgresql (sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) connection to server at "localhost" (127.0.0.1), port 6666 failed: Connection refused. Is the server running on that host and accepting TCP/IP connections?). При этом через Dbeaver я спокойно подключаюсь к базе по реквизитам из образа. Не могу понять что не так

Антон, не хватает контекста. Как запускается Airflow и в какой среде? Изначально он работал получается, а после перезапуска перестал работать?

Anton Tanachev, у меня произошла такая же ошибка. Мне помогло вернуть config в исходный вид (airflow config list --defaults > "${AIRFLOW_HOME}/airflow.cfg" или вручную исправить переменные executor и sql_alchemy_conn). А затем выполнить все действия из этого шага заново