2 способа установки Apache Airflow

Автор Категория ,
2 способа установки Apache Airflow

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

Локальная установка Apache Airflow

Apache Airflow был протестирован на:

  • Python: 3.6, 3.7, 3.8, 3.9
  • СУБД (Система управления базами данных):
    • PostgreSQL: 9.6, 10, 11, 12, 13
    • MySQL: 5.7, 8
    • SQLite: 3.15.0+
  • Kubernetes: 1.18.15, 1.19.7, 1.20.2

СУБД необходима для управления метаданными. SQLite применяется только для тестирования, в реальности лучше использовать PostgreSQL или MySQL.

Как минимум на вашей системе должны быть установлены следующие пакеты (ещё можно добавить PostgreSQL или MySQL):

sudo apt-get install -y --no-install-recommends \
        freetds-bin \
        krb5-user \
        ldap-utils \
        libffi6 \
        libsasl2-2 \
        libsasl2-modules \
        libssl1.1 \
        locales  \
        lsb-release \
        sasl2-bin \
        sqlite3 \
        unixodbc

Сам Apache Airflow устанавливается достаточно просто — через пакетный менеджер pip. В репозитории conda-forge также имеется Airflow, поэтому через менеджер conda он также доступен. К сожалению, при использовании других пакетных менеджеров вроде poetry и pip-tools придется самостоятельно конвертировать список зависимостей в нужный формат.

Не забудьте создать отдельную виртуальную среду, например, через python venv. Вам понадобится достаточно длинный список зависимостей (constraints), который в свою очередь зависит от версий Python и Airflow. Итак, для установки платформы Apache Airflow требуется дать следующие команды командному интерпретатору:

# airflow нужна отдельная директория
# например, для установки в домашней директории добавьте:
$ export AIRFLOW_HOME=~/airflow

# правильно было бы также создать среду в этой директории:
#   python3 -m venv myvenv
#   source bin/activate

# Новая версия - 2.1.3, однако в conda-forge лежит 2.1.2
$ AIRFLOW_VERSION=2.1.3
$ PYTHON_VERSION="$(python --version | cut -d " " -f 2 | cut -d "." -f 1-2)"
$ CONSTRAINT_URL="https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt"
$ pip install "apache-airflow==${AIRFLOW_VERSION}" --constraint "${CONSTRAINT_URL}"

CONSTRAINT_URL — ссылка на файл со списком зависимостей. В директории $AIRFLOW_HOME создаться конфигурационный файл airflow.cfg. Из коробки будет использоваться SQLite, который не поддерживает распаралелливание. SQLite работает с исполнителем SequentialExecutor, который выполняет задачи последовательно. В production использовать их не стоит, но для ознакомления и тестирования можно попробовать.

На этом установка завершена. Можете инициализировать базу данных, запустить планировщик (scheduler) и веб-сервер:

$ airflow db init
$ airflow webserver --port 8080

# Откройте новый терминал и запустите планировщик:
$ airflow scheduler

По умолчанию стоит только один пользователь с именем и паролем airflow. Создаются пользователи так:

$ airflow users create \
    --username admin \
    --firstname Peter \
    --lastname Parker \
    --role Admin \
    --email [email protected]

Установка через Docker

Если же не получилось установить Apache Airflow локально, то используйте Docker. Вам понадобится сам Docker и Docker Compose.

Требуется скачать конфигурационный файл YAML. Через него вы будете запускать Apache Airflow. Создайте директорию и скачайте в нее файл:

$ mkdir airflow
$ cd airflow
$ curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.1.3/docker-compose.yaml'

Этот файл содержит следующие сервисы:

  • airflow-scheduler — планировщик, который отслеживает все задачи и DAG’и, а также запускает экземпляры задач.
  • airflow-webserver — веб-сервер, доступный по адресу http://localhost:8080.
  • airflow-worker — воркер, который выполняет задачи, поставленные планировщиком.
  • airflow-init — служба инициализации.
  • flower — приложение для мониторинга задач. Он доступен по адресу http://localhost:5555.
  • postgres — СУБД.
  • redis — хранилище данных, которое пересылает сообщения от планировщика воркеру.

Исполнителем при такой конфигурации является Celery Executor, который как раз готов для использования в production.

В Linux вы должны убедиться, что контейнер и хост-компьютер имеют соответствующие права доступа к файлам. Делается это следующим образом:

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

Создайте дополнительные директории, в которые будут записываться ваши DAG’и, логи и плагины:

$ mkdir -p ./dags ./logs ./plugins

А теперь нужно поднять сам докер-контейнер со всеми сервисами:

$ docker-compose up airflow-init

Каждый раз, когда понадобится Apache Airflow, то нужно зайти в эту директорию и запустить команду выше. Теперь можете инициализировать базу данных (в данном случае Postgres) и начать работать.

 

В следующей статье создадим свой первый граф (DAG). А о том, как автоматизировать разработку конвейеров данных на реальных примерах вы узнаете на специализированном курсе «AIRF: Курс Apache AirFlow» в лицензированном учебном центре обучения и повышения квалификации разработчиков, менеджеров, инженеров данных, администраторов, Data Scientist’ов и аналитиков Big Data в Москве.

Источники

  1. Документация: локальная установка
  2. Документация: установка через Docker