Airflow - Лена Капаца
Airflow by Лена Капаца Nov. 27, 2022 Основы

Apache Airflow — это платформа с открытым исходным кодом для разработки, планирования и мониторинга рабочих процессов. Расширяемая среда Python Airflow позволяет создавать рабочие процессы, связанные практически с любой технологией. Веб-интерфейс помогает управлять состоянием ваших рабочих процессов. Airflow легко мастабируется.

Основная характеристика рабочих процессов Airflow заключается в том, что все рабочие процессы определены в коде Python:

Взгляните на следующий фрагмент кода:

from datetime import datetime

from airflow import DAG
from airflow.decorators import task
from airflow.operators.bash import BashOperator

# DAG – процесс, или набор таковых
with DAG(dag_id="demo", start_date=datetime(2022, 1, 1), schedule="0 0 * * *") as dag:

    # Задачи в данном контексте – операторы
    hello = BashOperator(task_id="hello", bash_command="echo hello")

    @task()
    def airflow():
        print("airflow")

    hello >> airflow()

Здесь вы видите:

DAG-процесс под названием demo, запускается с 1 января 2022 года один раз в день. BashOperator выполняет bash-скрипт, и функция airflow(), определенная с помощью декоратора @task.

Airflow компилирует этот сценарий и выполняет задачи с заданным интервалом и в определенном порядке. Статус процесса demo виден в веб-интерфейсе:

В этом примере демонстрируется простой сценарий Bash и Python, но эти задачи могут выполнять любой произвольный код, даже отправке электронного письма. Ниже – другое представление UI, описывающее статистику процесса:

Airflow — это платформа для оркестровки пакетных рабочих процессов. Если ваши процессы имеют четкое начало и конец и выполняются через равные промежутки времени, их можно запрограммировать процесс Airflow.

Если вы предпочитаете создание кода тонкой настройке в графическом интерфейсе, Airflow – инструмент для вас. Это означает, что:

Богатая семантика планирования и выполнения позволяет легко определять сложные конвейеры, работающие через равные промежутки времени. Backfill-исполнение позволяет повторно запускать конвейер на исторических данных после внесения изменений в логику. А возможность повторного запуска частичных конвейеров после устранения ошибки помогает максимально повысить эффективность.

Пользовательский интерфейс Airflow предоставляет как подробные представления о конвейерах и отдельных задачах, так и обзор конвейеров с течением времени. Из интерфейса вы можете просматривать логи и управлять задачами, например, повторяя задачу в случае сбоя.

Открытый исходный код Airflow позволяет работать с компонентами, разработанными, протестированными и используемыми многими другими компаниями по всему миру. В активном сообществе вы можете найти множество полезных ресурсов в виде постов в блогах, статей, конференций, книг и многого другого. Вы можете общаться с другими сверстниками через несколько каналов, таких как Slack.

Недостатки Airflow

Airflow был создан для ограниченных пакетных процессов. Хотя CLI и REST API позволяют запускать рабочие процессы, Airflow не был создан для бесконечно работающих рабочих процессов на основе событий. Airflow не является потоковым решением. Однако потоковая система, такая как Apache Kafka, часто работает вместе с Apache Airflow. Kafka можно использовать для приема и обработки в режиме реального времени, данные о событиях записываются в место хранения, а Airflow периодически запускает рабочий процесс, обрабатывающий пакет данных.

Если вы предпочитаете тонко настраивать программы в графическом интерфейсе, а не писать код, Airflow, вероятно, не является правильным решением. Веб-интерфейс призван максимально упростить управление рабочими процессами, а инфраструктура Airflow постоянно совершенствуется, чтобы сделать работу разработчиков максимально удобной. Однако философия Airflow заключается в том, чтобы использовать код.

Автор оригинальной статьи: apache.org

© Лена Капаца. Все права защищены.