Apache Airflow — это платформа с открытым исходным кодом для разработки, планирования и мониторинга рабочих процессов. Расширяемая среда Python Airflow позволяет создавать рабочие процессы, связанные практически с любой технологией. Веб-интерфейс помогает управлять состоянием ваших рабочих процессов. Airflow легко мастабируется.
Основная характеристика рабочих процессов Airflow заключается в том, что все рабочие процессы определены в коде Python:
- Динамичность: конвейеры Airflow настроены в виде кода Python.
- Расширяемость: платформа Airflow содержит коннекторы для подключения к многочисленным технологиям, что позволяет легко адаптировать их к вашей среде.
- Гибкость: встроенная параметризация процессов на механизме Jinja.
Взгляните на следующий фрагмент кода:
Здесь вы видите:
DAG-процесс под названием demo, запускается с 1 января 2022 года один раз в день. BashOperator выполняет bash-скрипт, и функция airflow(), определенная с помощью декоратора @task.
Airflow компилирует этот сценарий и выполняет задачи с заданным интервалом и в определенном порядке. Статус процесса demo виден в веб-интерфейсе:
В этом примере демонстрируется простой сценарий Bash и Python, но эти задачи могут выполнять любой произвольный код, даже отправке электронного письма. Ниже – другое представление UI, описывающее статистику процесса:
Airflow — это платформа для оркестровки пакетных рабочих процессов. Если ваши процессы имеют четкое начало и конец и выполняются через равные промежутки времени, их можно запрограммировать процесс Airflow.
Если вы предпочитаете создание кода тонкой настройке в графическом интерфейсе, Airflow – инструмент для вас. Это означает, что:
- Процессы можно хранить в системе git, что позволяет пользоваться преимуществами этой системы версионирования
- Процессы могут разрабатываться несколькими людьми одновременно
- Могут быть написаны тесты для проверки функциональности
- Список компонентов довольно обширный, и его можно пополнить.
Богатая семантика планирования и выполнения позволяет легко определять сложные конвейеры, работающие через равные промежутки времени. Backfill-исполнение позволяет повторно запускать конвейер на исторических данных после внесения изменений в логику. А возможность повторного запуска частичных конвейеров после устранения ошибки помогает максимально повысить эффективность.
Пользовательский интерфейс Airflow предоставляет как подробные представления о конвейерах и отдельных задачах, так и обзор конвейеров с течением времени. Из интерфейса вы можете просматривать логи и управлять задачами, например, повторяя задачу в случае сбоя.
Открытый исходный код Airflow позволяет работать с компонентами, разработанными, протестированными и используемыми многими другими компаниями по всему миру. В активном сообществе вы можете найти множество полезных ресурсов в виде постов в блогах, статей, конференций, книг и многого другого. Вы можете общаться с другими сверстниками через несколько каналов, таких как Slack.
Недостатки Airflow
Airflow был создан для ограниченных пакетных процессов. Хотя CLI и REST API позволяют запускать рабочие процессы, Airflow не был создан для бесконечно работающих рабочих процессов на основе событий. Airflow не является потоковым решением. Однако потоковая система, такая как Apache Kafka, часто работает вместе с Apache Airflow. Kafka можно использовать для приема и обработки в режиме реального времени, данные о событиях записываются в место хранения, а Airflow периодически запускает рабочий процесс, обрабатывающий пакет данных.
Если вы предпочитаете тонко настраивать программы в графическом интерфейсе, а не писать код, Airflow, вероятно, не является правильным решением. Веб-интерфейс призван максимально упростить управление рабочими процессами, а инфраструктура Airflow постоянно совершенствуется, чтобы сделать работу разработчиков максимально удобной. Однако философия Airflow заключается в том, чтобы использовать код.
Автор оригинальной статьи: apache.org