Airflow — це програма для створення, запуску і моніторингу потоків робіт.[3]
Опис
Потоки робіт в Airflow задаються орієнтованими ациклічними графами (англ.directed acyclic graph, DAG). DAG — це набір робіт які потрібно виконати і залежностей між ними.[4]
Кожен DAG описується мовою Python, і завантажується в Airflow з файлів директорії вказаної змінною DAG_FOLDER, якщо всередині файлу зустрічаються рядок "airflow" і рядок DAG. Airflow виконає кожен такий файл і імпортує з них всі об'єкти в глобальному просторі імен модуля що мають тип DAG.[4] Також, DAG-и можна створювати динамічно, завантажуючи конфігурацію наприклад з БД, за допомогою додавання елементів в словник globals()[5].
Типи робіт які виконуються в кожному вузлі DAG-а задаються операторами (англ.Operators). Існує багато різних класів операторів, наприклад[4]:
PythonOperator — викликає довільну функцію мовою Python
SimpleHttpOperator — надсилає HTTP запит
MySqlOperator, SqliteOperator, PostgresOperator, JdbcOperator, і т. ін. — виконує SQL запит
Sensor — певний час очікує виконання якоїсь умови
Існують також різноманітні спеціальні оператори, наприклад цілий набір для виконання різних дій з Google Cloud Platform[6]
Оператор з параметрами для його запуску описує задачу. Задачу можна виконувати багато разів, і кожне виконання називають екземпляром задачі (англ.task instance). Екземпляр задачі може перебувати в різних станах: запланована (англ.scheduled), виконується (англ.running), успішно виконана (англ.success), невдача (англ.failed), невдача залежності (англ.upstream failed), і т. д.[7][8]
Деякі параметри операторів являють собою шаблони Jinja, які перед виконанням заповнюються змінними контексту. Це можна застосовувати наприклад для динамічної побудови команд Bash.[9]
Airflow може бути запущений на одному (в режимі «LocalExecutor») чи кількох вузлах кластера (в режимі «CeleryExecutor»).[10]
Історія
Проєкт розпочатий Максимом Бушеманом (фр.Maxime Beauchemin) в Airbnb в 2014-му році. Офіційно переведений на Github Airbnb в 2015, а в травні 2016 приєднаний до інкубатора Apache Software Foundation.[11] Випущений з інкубатора в грудні 2018.[12]
Хмарні сервіси
Існують компанії що надають готове середовище Airflow як хмарний сервіс. Серед них Astronomer.io[13], яка фокусується саме на впровадженні Airflow, та Google (про що детальніше описано нижче).
Google Cloud Composer
Архітектура Google Cloud Composer
Google Cloud Platform серед інших сервісів надає також Airflow, під назвою Cloud Composer.[14] Запуск бета версії сервісу відбувся 1 травня 2018 року[15].
Середовище Google Cloud Composer (окрема інсталяція Airflow) складається з кількох компонентів GCP, які розміщуються як в проєкті клієнта так і в мультиорендному проєкті. Вебсервер Airflow на App Engine та база даних в Cloud SQL запускаються в мультиорендному проєкті, а кластер Kubernetes, який займається власне виконанням задач, і конфігурація DAG-ів у Google Cloud Storage зберігаються в проєкті клієнта.[16]
Критика
Airflow погано маштабується, залежності між задачами визначаються лише завершенням процесу задачі, тому доводиться додавати багато сенсорів.[17]