Немного лирики, что такое 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-scheduler.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
Проверьте, что путь к виртуальному окружению (/root/airflow_venv) и порт веб-сервера (8080) указаны корректно.
4. Создайте файл сервиса для Scheduler Airflow:
sudo nano /etc/systemd/system/airflow-webserver.service
Добавьте следующее содержимое:
[Unit]
Description=Apache Airflow Scheduler
After=network.target
[Service]
Environment="AIRFLOW_HOME=/root/airflow"
User=root
Group=root
Type=simple
ExecStart=/root/airflow_venv/bin/airflow scheduler
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.