Тип | ETL |
---|---|
Розробник | Apache Software Foundation, Airbnb |
Стабільний випуск | 1.10.3 |
Мова програмування | 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-и можна створювати динамічно, завантажуючи конфігурацію наприклад з БД, за допомогою додавання елементів в словник globals()
[4].
Типи робіт які виконуються в кожному вузлі DAG-а задаються операторами (англ. Operators). Існує багато різних класів операторів, наприклад[3]:
BashOperator
— виконує команди BashPythonOperator
— викликає довільну функцію мовою PythonSimpleHttpOperator
— надсилає HTTP запитMySqlOperator
, SqliteOperator
, PostgresOperator
, JdbcOperator
, і т. ін. — виконує SQL запитSensor
— певний час очікує виконання якоїсь умовиІснують також різноманітні спеціальні оператори, наприклад цілий набір для виконання різних дій з Google Cloud Platform[5]
Оператор з параметрами для його запуску описує задачу. Задачу можна виконувати багато разів, і кожне виконання називають екземпляром задачі (англ. task instance). Екземпляр задачі може перебувати в різних станах: запланована (англ. scheduled), виконується (англ. running), успішно виконана (англ. success), невдача (англ. failed), невдача залежності (англ. upstream failed), і т. д.[6][7]
Деякі параметри операторів являють собою шаблони Jinja, які перед виконанням заповнюються змінними контексту. Це можна застосовувати наприклад для динамічної побудови команд Bash.[8]
Цей розділ потребує доповнення. (грудень 2018) |
Airflow може бути запущений на одному (в режимі «LocalExecutor») чи кількох вузлах кластера (в режимі «CeleryExecutor»).[9]
Проєкт розпочатий Максимом Бушеманом (фр. Maxime Beauchemin) в Airbnb в 2014-му році. Офіційно переведений на Github Airbnb в 2015, а в травні 2016 приєднаний до інкубатора Apache Software Foundation.[10] Випущений з інкубатора в грудні 2018.[11]
Існують компанії що надають готове середовище Airflow як хмарний сервіс. Серед них Astronomer.io[12], яка фокусується саме на впровадженні Airflow, та Google (про що детальніше описано нижче).
Google Cloud Platform серед інших сервісів надає також Airflow, під назвою Cloud Composer.[13] Запуск бета версії сервісу відбувся 1 травня 2018 року[14].
Середовище Google Cloud Composer (окрема інсталяція Airflow) складається з кількох компонентів GCP, які розміщуються як в проєкті клієнта так і в мультиорендному проєкті. Вебсервер Airflow на App Engine та база даних в Cloud SQL запускаються в мультиорендному проєкті, а кластер Kubernetes, який займається власне виконанням задач, і конфігурація DAG-ів у Google Cloud Storage зберігаються в проєкті клієнта.[15]
Airflow погано маштабується, залежності між задачами визначаються лише завершенням процесу задачі, тому доводиться додавати багато сенсорів.[16]
{{cite web}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)