Немного лирики, что такое 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/
Добавить комментарий