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.

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