Перейти до вмісту

Apache Airflow

Матеріал з Вікіпедії — вільної енциклопедії.
Apache Airflow
ТипETL
РозробникApache Software Foundation, Airbnb
Стабільний випуск1.10.3
Мова програмуванняPython[1] Редагувати інформацію у Вікіданих
Стан розробкиактивний
ЛіцензіяApache Software License 2.0d[2] і Apache License Редагувати інформацію у Вікіданих
Репозиторійgithub.com/apache/airflow
Вебсайтairflow.apache.org Редагувати інформацію у Вікіданих

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]:

  • BashOperator — виконує команди Bash
  • 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]

Див. також

[ред. | ред. код]

Зноски

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

Посилання

[ред. | ред. код]