Apache Airflow
![]() | |
Тип | ETL |
---|---|
Розробник | Apache Software Foundation, Airbnb |
Стабільний випуск | 1.10.1 |
Мова програмування | Python ![]() |
Стан розробки | активний |
Ліцензія | Apache Software License 2.0d[1] і Apache License ![]() |
Репозиторій | github.com/apache/airflow |
Вебсайт | airflow.apache.org ![]() |
Airflow - це програма для створення, запуску і моніторингу потоків робіт.[2]
Опис
Потоки робіт в Airflow задаються орієнтованими ациклічними графами (англ. directed acyclic graph, DAG). DAG - це набір робіт які потрібно виконати і залежностей між ними.[3]
Кожен DAG описується мовою Python, і завантажується в Airflow з файлів директорії вказаної змінною DAG_FOLDER
, якщо всередині файлу зустрічаються рядок "airflow"
і рядок DAG
. Airflow виконає кожен такий файл і імпортує з них всі об'єкти в глобальному просторі імен модуля що мають тип DAG
.[3]
Типи робіт які виконуються в кожному вузлі DAG-а задаються операторами (англ. Operators). Існує багато різних класів операторів, наприклад[3]:
BashOperator
- виконує команди BashPythonOperator
- викликає довільну функцію мовою PythonSimpleHttpOperator
- надсилає HTTP запитMySqlOperator
,SqliteOperator
,PostgresOperator
,JdbcOperator
, і т.п. - виконує SQL запитSensor
- певний час очікує виконання якоїсь умови
Існують також різноманітні спеціальні оператори, наприклад цілий набір для виконання різних дій з Google Cloud Platform[4]
Оператор з параметрами для його запуску описує задачу. Задачу можна виконувати багато разів, і кожне виконання називають екземпляром задачі (англ. task instance). Екземпляр задачі може перебувати в різних станах: запланована (англ. scheduled), виконується (англ. running), успішно виконана (англ. success), невдача (англ. failed), невдача залежності (англ. upstream failed), і т.д.[5]
Деякі параметри операторів являють собою шаблони Jinja, які перед виконанням заповнюються змінними контексту. Це можна застосовувати наприклад для динамічної побудови команд Bash.[6]
![]() | Цей розділ потребує доповнення. |
Історія
Проект розпочатий Максимом Бушеманом (фр. Maxime Beauchemin) в Airbnb в 2014-му році. Офіційно переведений на Github Airbnb в 2015, а в травні 2016 приєднаний до інкубатора Apache Software Foundation.[7]
Хмарні сервіси
Існують компанії що надають готове середовище Airflow як хмарний сервіс. Серед них Astronomer.io[8], яка фокусується саме на впровадженні Airflow, та Google (про що детальніше описано нижче).
Google Cloud Composer

Google Cloud Platform серед інших сервісів надає також Airflow, під назвою Cloud Composer.[9] Запуск бета версії сервісу відбувся 1 травня 2018 року[10].
Середовище Google Cloud Composer (окрема інсталяція Airflow) складається з кількох компонентів GCP, які розміщуються як в проекті клієнта так і в мультиорендному проекті. Веб-сервер Airflow на App Engine та база даних в Cloud SQL запускаються в мультиорендному проекті, а кластер Kubernetes, який займається власне виконанням задач, і конфігурація DAG-ів у Google Storage зберігаються в проекті клієнта.[11]
Див. також
Зноски
- ↑ https://airflow.incubator.apache.org/license.html
- ↑ https://airflow.readthedocs.io/en/latest/
- ↑ а б в https://airflow.apache.org/concepts.html
- ↑ https://airflow.apache.org/howto/operator.html#google-cloud-platform-operators
- ↑ https://github.com/apache/incubator-airflow/blob/master/airflow/utils/state.py#L50
- ↑ https://airflow.apache.org/concepts.html#jinja-templating
- ↑ https://airflow.apache.org/project.html
- ↑ https://www.astronomer.io/
- ↑ https://cloud.google.com/composer/
- ↑ https://cloud.google.com/blog/products/gcp/cloud-composer-is-now-in-beta-build-and-run-practical-workflows-with-minimal-effort
- ↑ https://cloud.google.com/composer/docs/concepts/overview