Гайд по установке Apache Airflow, на случай, если у тебя его ещё нет в преддверии 2025 года

от автора

Немного лирики, что такое Apache Airflow — это оркестратор (ваших данных), инструмент для создания, планирования и мониторинга рабочих процессов (так называемых DAGs — Directed Acyclic Graphs).

Что с помощью его можно делать с данными:

  • Планирование задач: Airflow позволяет задавать расписание выполнения задач, включая зависимости между ними.

  • Мониторинг и оповещение: Система позволяет отслеживать выполнение задач в реальном времени и получать уведомления о возможных проблемах. Если определенные показатели опускаются ниже порогового значения, Airflow может инициировать оповещения или уведомления.

  • Управление Pipeline данных: автоматизировать и оптимизировать рабочие процессы, в обработке больших данных, ETL (Extract, Transform, Load) процессах.

  • Контроль качества данных: вы можете создавать DAG для проверки данных на различных этапах ETL. Это может включать проверку на наличие пропущенных значений, обеспечение правильности типов данных и проверку по предопределенным схемам.

  • Автоматизированная отчетность: создание регулярных отчетов по показателям качества данных. Это поможет вам отслеживать любые проблемы и оперативно их решать.

  • Расширяемость: Airflow легко интегрируется с различными сервисами и библиотеками, что делает его гибким для различных сценариев использования.

Ок, с вступлением разобрались, теперь перейдём к главному. Как Airflow развернуть на своём сервере.

Установите необходимые зависимости

Обновите список пакетов и установите зависимости:

sudo apt update   sudo apt install -y python3-pip python3-dev libpq-dev build-essential 

1. Установите и настройте виртуальное окружение (рекомендуется)

Создайте и активируйте виртуальное окружение, чтобы изолировать установку

Airflow:

python3 -m venv airflow_venv  source airflow_venv/bin/activate 

2. Установите Apache Airflow

Для установки Airflow используйте команду pip с указанием нужной версии:

pip install apache-airflow 

3. Инициализация базы данных

Airflow использует базу данных для хранения информации о задачах и их состоянии. Для инициализации базы данных выполните:

airflow db init 

4. Создайте пользователя для веб-интерфейса

Создайте администратора для веб-интерфейса Airflow:

В данном случае логин – admin, пароль – admin.

airflow users create \ —username admin \ —password admin \ —firstname Firstname \ —lastname Lastname \ —role Admin \ —email admin@example.com

5. Запустите веб-сервер и планировщик

Теперь можно запустить веб-сервер и планировщик задач Airflow.

Для запуска веб-сервера:

airflow webserver --port 8080

Для запуска планировщика:

Откройте новый терминал (оставьте веб-сервер работающим) и выполните:

airflow scheduler

Ещё чуть-чуть и будет заветное окно:

Шучу, веб-окно будет, но без претензий по доступам)

Шучу, веб-окно будет, но без претензий по доступам)

6. Доступ к веб-интерфейсу

Перейдите в браузер и откройте адрес:

 http://localhost:8080

Или используйте IP адрес вашего сервера.

Войдите, используя созданные учетные данные (по умолчанию: admin / admin).

Использование PostgreSQL

Чтобы установить и использовать PostgreSQL в качестве базы данных для Apache Airflow на Ubuntu, выполните следующие шаги:

Установите БД PostgreSQL

1.Сначала установим PostgreSQL на вашем сервере:

sudo apt update   sudo apt install postgresql postgresql-contrib 

2. Настройте PostgreSQL

После установки PostgreSQL создайте базу данных и пользователя для Airflow.

sudo -u postgres psql 

3.Создайте пользователя и базу данных:

В PostgreSQL создайте нового пользователя и базу данных для Airflow:

CREATE USER airflow_user WITH PASSWORD 'your_password';   CREATE DATABASE airflow_db;   GRANT ALL PRIVILEGES ON DATABASE airflow_db TO airflow_user;   GRANT ALL PRIVILEGES ON SCHEMA public TO airflow_user; 

Выйдите из PostgreSQL:

\q 

Установите зависимости для работы с PostgreSQL

Чтобы Airflow мог подключаться к PostgreSQL, необходимо установить дополнительные зависимости:

pip install apache-airflow[postgres] 

1. Настройте Airflow для использования PostgreSQL

Теперь нужно изменить конфигурацию Airflow, чтобы использовать PostgreSQL вместо SQLite (который используется по умолчанию).

Откройте файл конфигурации airflow.cfg:

nano ~/airflow/airflow.cfg 

Найдите строку, начинающуюся с sql_alchemy_conn, и замените ее на строку подключения к PostgreSQL, используя данные, которые вы создали ранее:

sql_alchemy_conn = postgresql+psycopg2://airflow_user:your_password@localhost/airflow_db 
  • airflow_user — это имя пользователя PostgreSQL.

  • your_password — это пароль, который вы задали для этого пользователя.

  • localhost — это адрес хоста базы данных (если PostgreSQL находится на том же сервере).

  • airflow_db — это имя базы данных, которую вы создали.

Измените Executor на желаемый.

Если используете один хост то установите:

executor = LocalExecutor 

Инициализация базы данных

1.Активируйте виртуальное окружение:

source airflow_venv/bin/activate 

Выполните инициализацию базы данных:

airflow db init 

2. Перезапустите Airflow

Теперь запустите Airflow с использованием новой базы данных PostgreSQL.

Для запуска веб-сервера:

airflow webserver --port 8080 

Для запуска планировщика:

Откройте новый терминал и выполните:

airflow scheduler 

Настройка systemd

Для настройки Apache Airflow как службы в systemd на Ubuntu, создайте два отдельных systemd-сервиса: один для веб-сервера и другой для Scheduler. Это обеспечит автоматический запуск и управление Airflow при перезагрузке системы.

3. Создайте сервис для веб-сервера Airflow

Создайте файл сервиса для веб-сервера:

sudo nano /etc/systemd/system/airflow-webserver.service 

Добавьте в файл следующее содержимое:

[Unit]

Description=Apache Airflow Web Server

After=network.target

[Service]

Environment=»AIRFLOW_HOME=/root/airflow»

User=root

Group=root

Type=simple

ExecStart=/root/airflow_venv/bin/airflow webserver —port 8080

Restart=always

RestartSec=5s

[Install]

WantedBy=multi-user.targe

Проверьте, что путь к виртуальному окружению (/root/airflow_venv) и порт веб-сервера (8080) указаны корректно.

4. Создайте файл сервиса для Scheduler Airflow:

sudo nano /etc/systemd/system/airflow-webserver.service 

Добавьте следующее содержимое:

[Unit]

Description=Apache Airflow Web Server

After=network.target

[Service]

Environment=»AIRFLOW_HOME=/root/airflow»

User=root

Group=root

Type=simple

ExecStart=/root/airflow_venv/bin/airflow webserver —port 8080

Restart=always

RestartSec=5s

[Install]

WantedBy=multi-user.target

5. Перезагрузите systemd и включите сервисы

Сначала перезагрузите systemd для загрузки новых конфигураций:

sudo systemctl daemon-reload 

Затем включите и запустите оба сервиса:

sudo systemctl enable airflow-webserver   sudo systemctl start airflow-webserver   sudo systemctl enable airflow-scheduler   sudo systemctl start airflow-scheduler 

6. Проверьте статус сервисов

Чтобы убедиться, что сервисы работают правильно, выполните:

sudo systemctl status airflow-webserver   sudo systemctl status airflow-scheduler 

Теперь Apache Airflow веб-сервер и Scheduler должны автоматически запускаться и управляться через systemd.


ссылка на оригинал статьи https://habr.com/ru/articles/860900/