Apache Airflow — Вікіпедія

Apache Airflow
Тип ETL
Розробник Apache Software Foundation, Airbnb
Стабільний випуск 1.10.3
Мова програмування Python
Стан розробки активний
Ліцензія Apache License, Version 2.0[d][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 — виконує команди Bash
  • 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 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]

Див. також[ред. | ред. код]

Зноски[ред. | ред. код]

  1. https://airflow.incubator.apache.org/license.html
  2. Apache Airflow Documentation — Airflow Documentation. Архів оригіналу за 14 квітня 2020. Процитовано 24 квітня 2020.
  3. а б в Concepts — Airflow Documentation. Архів оригіналу за 22 листопада 2019. Процитовано 24 квітня 2020.
  4. Astronomer, Inc. Dynamically Generating DAGs in Airflow. Astronomer. Архів оригіналу за 4 листопада 2020. Процитовано 24 квітня 2020.
  5. Архівована копія. Архів оригіналу за 15 грудня 2018. Процитовано 15 грудня 2018.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  6. apache/airflow. GitHub. Процитовано 24 квітня 2020.
  7. Опис роботи планувальника. Архів оригіналу за 6 березня 2019. Процитовано 4 березня 2019.
  8. Concepts — Airflow Documentation. Архів оригіналу за 22 листопада 2019. Процитовано 24 квітня 2020.
  9. Gomez, Eloïse (21 листопада 2018). Airflow Architecture at Drivy. Drivy Engineering. Архів оригіналу за 6 березня 2019. Процитовано 5 березня 2019.
  10. Project — Airflow Documentation. Архів оригіналу за 12 серпня 2019. Процитовано 24 квітня 2020.
  11. Incubation Status Template - Apache Incubator. incubator.apache.org. Процитовано 6 лютого 2024.
  12. Astronomer, Inc. Astronomer | A cloud-native and enterprise-grade Apache Airflow platform. Astronomer. Архів оригіналу за 3 травня 2020. Процитовано 24 квітня 2020.
  13. Cloud Composer  |  Google Cloud. Google Cloud. Архів оригіналу за 27 квітня 2020. Процитовано 24 квітня 2020.
  14. Cloud Composer is now in beta: build and run practical workflows with minimal effort. Google Cloud Blog. Архів оригіналу за 9 листопада 2020. Процитовано 24 квітня 2020.
  15. Overview of Cloud Composer  |  Google Cloud. Google Cloud. Архів оригіналу за 15 січня 2020. Процитовано 24 квітня 2020.
  16. I would strongly suggest not using Airflow if your company doesn't already... an... | Hacker News. Процитовано 24 квітня 2020.

Посилання[ред. | ред. код]