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]:
PythonOperator — викликає довільну функцію мовою Python
SimpleHttpOperator — надсилає HTTP запит
MySqlOperator, SqliteOperator, PostgresOperator, JdbcOperator, і т. ін. — виконує SQL запит
Sensor — певний час очікує виконання якоїсь умови
Існують також різноманітні спеціальні оператори, наприклад цілий набір для виконання різних дій з Google Cloud Platform[5]
Оператор з параметрами для його запуску описує задачу. Задачу можна виконувати багато разів, і кожне виконання називають екземпляром задачі (англ.task instance). Екземпляр задачі може перебувати в різних станах: запланована (англ.scheduled), виконується (англ.running), успішно виконана (англ.success), невдача (англ.failed), невдача залежності (англ.upstream failed), і т. д.[6][7]
Деякі параметри операторів являють собою шаблони Jinja, які перед виконанням заповнюються змінними контексту. Це можна застосовувати наприклад для динамічної побудови команд Bash.[8]
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 Composer
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]