Apache Airflow
Тип | ETL |
---|---|
Розробник | Apache Software Foundation, Airbnb |
Стабільний випуск | 1.10.3 |
Мова програмування | Python |
Стан розробки | активний |
Ліцензія | Apache Software License 2.0d[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
— виконує команди BashPythonOperator
— викликає довільну функцію мовою PythonSimpleHttpOperator
— надсилає HTTP запитMySqlOperator
,SqliteOperator
,PostgresOperator
,JdbcOperator
, і т. ін. — виконує SQL запитSensor
— певний час очікує виконання якоїсь умови
Існують також різноманітні спеціальні оператори, наприклад цілий набір для виконання різних дій з Google Cloud Platform[5]
Оператор з параметрами для його запуску описує задачу. Задачу можна виконувати багато разів, і кожне виконання називають екземпляром задачі (англ. task instance). Екземпляр задачі може перебувати в різних станах: запланована (англ. scheduled), виконується (англ. running), успішно виконана (англ. success), невдача (англ. failed), невдача залежності (англ. upstream failed), і т. д.[6][7]
Деякі параметри операторів являють собою шаблони Jinja, які перед виконанням заповнюються змінними контексту. Це можна застосовувати наприклад для динамічної побудови команд Bash.[8]
Цей розділ потребує доповнення. (грудень 2018) |
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 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]
- ↑ https://airflow.incubator.apache.org/license.html
- ↑ Apache Airflow Documentation — Airflow Documentation. Архів оригіналу за 14 квітня 2020. Процитовано 24 квітня 2020.
- ↑ а б в Concepts — Airflow Documentation. Архів оригіналу за 22 листопада 2019. Процитовано 24 квітня 2020.
- ↑ Astronomer, Inc. Dynamically Generating DAGs in Airflow. Astronomer. Архів оригіналу за 4 листопада 2020. Процитовано 24 квітня 2020.
- ↑ Архівована копія. Архів оригіналу за 15 грудня 2018. Процитовано 15 грудня 2018.
{{cite web}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання) - ↑ apache/airflow. GitHub. Процитовано 24 квітня 2020.
- ↑ Опис роботи планувальника. Архів оригіналу за 6 березня 2019. Процитовано 4 березня 2019.
- ↑ Concepts — Airflow Documentation. Архів оригіналу за 22 листопада 2019. Процитовано 24 квітня 2020.
- ↑ Gomez, Eloïse (21 листопада 2018). Airflow Architecture at Drivy. Drivy Engineering. Архів оригіналу за 6 березня 2019. Процитовано 5 березня 2019.
- ↑ Project — Airflow Documentation. Архів оригіналу за 12 серпня 2019. Процитовано 24 квітня 2020.
- ↑ Incubation Status Template - Apache Incubator. incubator.apache.org. Процитовано 6 лютого 2024.
- ↑ Astronomer, Inc. Astronomer | A cloud-native and enterprise-grade Apache Airflow platform. Astronomer. Архів оригіналу за 3 травня 2020. Процитовано 24 квітня 2020.
- ↑ Cloud Composer | Google Cloud. Google Cloud. Архів оригіналу за 27 квітня 2020. Процитовано 24 квітня 2020.
- ↑ Cloud Composer is now in beta: build and run practical workflows with minimal effort. Google Cloud Blog. Архів оригіналу за 9 листопада 2020. Процитовано 24 квітня 2020.
- ↑ Overview of Cloud Composer | Google Cloud. Google Cloud. Архів оригіналу за 15 січня 2020. Процитовано 24 квітня 2020.
- ↑ I would strongly suggest not using Airflow if your company doesn't already... an... | Hacker News. Процитовано 24 квітня 2020.
- Офіційний сайт [Архівовано 16 грудня 2018 у Wayback Machine.]
- Github репозиторій [Архівовано 14 грудня 2018 у Wayback Machine.]
- Пакет на PyPI [Архівовано 15 грудня 2018 у Wayback Machine.]
- Теґ на StackOverflow [Архівовано 15 грудня 2018 у Wayback Machine.]
- Get started developing workflows with Apache Airflow [Архівовано 8 грудня 2018 у Wayback Machine.]