Apache Airflow
Airflow — це програма для створення, запуску і моніторингу потоків робіт.

Опис 
Потоки робіт в Airflow задаються орієнтованими ациклічними графами (, DAG). DAG — це набір робіт які потрібно виконати і залежностей між ними.

Кожен DAG описується мовою Python, і завантажується в Airflow з файлів директорії вказаної змінною DAG_FOLDER, якщо всередині файлу зустрічаються рядок "airflow" і рядок DAG. Airflow виконає кожен такий файл і імпортує з них всі об'єкти в глобальному просторі імен модуля що мають тип DAG. Також, DAG-и можна створювати динамічно, завантажуючи конфігурацію наприклад з БД, за допомогою додавання елементів в словник globals().

Типи робіт які виконуються в кожному вузлі DAG-а задаються операторами (). Існує багато різних класів операторів, наприклад:

 BashOperator — виконує команди Bash
 PythonOperator — викликає довільну функцію мовою Python
 SimpleHttpOperator — надсилає HTTP запит
 MySqlOperator, SqliteOperator, PostgresOperator, JdbcOperator, і т. ін. — виконує SQL запит
 Sensor — певний час очікує виконання якоїсь умови

Існують також різноманітні спеціальні оператори, наприклад цілий набір для виконання різних дій з Google Cloud Platform

Оператор з параметрами для його запуску описує задачу. Задачу можна виконувати багато разів, і кожне виконання називають екземпляром задачі (). Екземпляр задачі може перебувати в різних станах: запланована (), виконується (), успішно виконана (), невдача (), невдача залежності (), і т. д.

Деякі параметри операторів являють собою шаблони Jinja, які перед виконанням заповнюються змінними контексту. Це можна застосовувати наприклад для динамічної побудови команд Bash.

Airflow може бути запущений на одному (в режимі «LocalExecutor») чи кількох вузлах кластера (в режимі «CeleryExecutor»).

Історія 
Проєкт розпочатий Максимом Бушеманом () в Airbnb в 2014-му році. Офіційно переведений на Github Airbnb в 2015, а в травні 2016 приєднаний до інкубатора Apache Software Foundation.

Хмарні сервіси 
Існують компанії що надають готове середовище Airflow як хмарний сервіс. Серед них Astronomer.io, яка фокусується саме на впровадженні Airflow, та Google (про що детальніше описано нижче).

Google Cloud Composer 

Google Cloud Platform серед інших сервісів надає також Airflow, під назвою Cloud Composer. Запуск бета версії сервісу відбувся 1 травня 2018 року.

Середовище Google Cloud Composer (окрема інсталяція Airflow) складається з кількох компонентів GCP, які розміщуються як в проєкті клієнта так і в мультиорендному проєкті. Вебсервер Airflow на App Engine та база даних в Cloud SQL запускаються в мультиорендному проєкті, а кластер Kubernetes, який займається власне виконанням задач, і конфігурація DAG-ів у Google Storage зберігаються в проєкті клієнта.

Критика 
Airflow погано маштабується, залежності між задачами визначаються лише завершенням процесу задачі, тому доводиться додавати багато сенсорів.

Див. також

Зноски

Посилання 
 Офіційний сайт 
 Github репозиторій 
 Пакет на PyPI 
 Теґ на StackOverflow 
 Get started developing workflows with Apache Airflow 

Вільне програмне забезпечення на Python
Airflow — це програма для створення , запуску і моніторингу потоків робіт . Опис Потоки робіт в Airflow задаються орієнтованими ациклічними графами ( , DAG ) . DAG — це набір робіт які потрібно виконати і залежностей між ними . Кожен DAG описується мовою Python , і завантажується в Airflow з файлів директорії вказаної змінною DAG_FOLDER , якщо всередині файлу зустрічаються рядок " airflow " і рядок DAG . Airflow виконає кожен такий файл і імпортує з них всі об'єкти в глобальному просторі імен модуля що мають тип DAG . Також , DAG-и можна створювати динамічно , завантажуючи конфігурацію наприклад з БД , за допомогою додавання елементів в словник globals ( ) . Типи робіт які виконуються в кожному вузлі DAG-а задаються операторами ( ) . Існує багато різних класів операторів , наприклад : BashOperator — виконує команди Bash PythonOperator — викликає довільну функцію мовою Python SimpleHttpOperator — надсилає HTTP запит MySqlOperator , SqliteOperator , PostgresOperator , JdbcOperator , і т . ін . — виконує SQL запит Sensor — певний час очікує виконання якоїсь умови Існують також різноманітні спеціальні оператори , наприклад цілий набір для виконання різних дій з Google Cloud Platform Оператор з параметрами для його запуску описує задачу . Задачу можна виконувати багато разів , і кожне виконання називають екземпляром задачі ( ) . Екземпляр задачі може перебувати в різних станах : запланована ( ) , виконується ( ) , успішно виконана ( ) , невдача ( ) , невдача залежності ( ) , і т . д . Деякі параметри операторів являють собою шаблони Jinja , які перед виконанням заповнюються змінними контексту . Це можна застосовувати наприклад для динамічної побудови команд Bash . Airflow може бути запущений на одному ( в режимі « LocalExecutor » ) чи кількох вузлах кластера ( в режимі « CeleryExecutor » ) . Історія Проєкт розпочатий Максимом Бушеманом ( ) в Airbnb вму році . Офіційно переведений на Github Airbnb в а в травніприєднаний до інкубатора Apache Software Foundation . Хмарні сервіси Існують компанії що надають готове середовище Airflow як хмарний сервіс . Серед них Astronomer.io , яка фокусується саме на впровадженні Airflow , та Google ( про що детальніше описано нижче ) . Google Cloud Composer Google Cloud Platform серед інших сервісів надає також Airflow , під назвою Cloud Composer . Запуск бета версії сервісу відбувсятравняроку . Середовище Google Cloud Composer ( окрема інсталяція Airflow ) складається з кількох компонентів GCP , які розміщуються як в проєкті клієнта так і в мультиорендному проєкті . Вебсервер Airflow на App Engine та база даних в Cloud SQL запускаються в мультиорендному проєкті , а кластер Kubernetes , який займається власне виконанням задач , і конфігурація DAG-ів у Google Storage зберігаються в проєкті клієнта . Критика Airflow погано маштабується , залежності між задачами визначаються лише завершенням процесу задачі , тому доводиться додавати багато сенсорів . Див . також Зноски Посилання Офіційний сайт Github репозиторій Пакет на PyPI Теґ на StackOverflow Get started developing workflows with Apache Airflow Вільне програмне забезпечення на Python