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

Apache Airflow

Матеріал з Вікіпедії — вільної енциклопедії.
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 — виконує команди 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]

Хмарні сервіси

Існують компанії що надають готове середовище Airflow як хмарний сервіс. Серед них Astronomer.io[11], яка фокусується саме на впровадженні Airflow, та Google (про що детальніше описано нижче).

Google Cloud Composer

Архітектура Google Cloud Composer

Google Cloud Platform серед інших сервісів надає також Airflow, під назвою Cloud Composer.[12] Запуск бета версії сервісу відбувся 1 травня 2018 року[13].

Середовище Google Cloud Composer (окрема інсталяція Airflow) складається з кількох компонентів GCP, які розміщуються як в проекті клієнта так і в мультиорендному проекті. Веб-сервер Airflow на App Engine та база даних в Cloud SQL запускаються в мультиорендному проекті, а кластер Kubernetes, який займається власне виконанням задач, і конфігурація DAG-ів у Google Storage зберігаються в проекті клієнта.[14]

Див. також

Зноски

  1. https://airflow.incubator.apache.org/license.html
  2. https://airflow.readthedocs.io/en/latest/
  3. а б в https://airflow.apache.org/concepts.html
  4. https://www.astronomer.io/guides/dynamically-generating-dags/
  5. https://airflow.apache.org/howto/operator.html#google-cloud-platform-operators
  6. https://github.com/apache/incubator-airflow/blob/master/airflow/utils/state.py#L50
  7. Опис роботи планувальника
  8. https://airflow.apache.org/concepts.html#jinja-templating
  9. Gomez, Eloïse (21 листопада 2018). Airflow Architecture at Drivy. Drivy Engineering. Процитовано 5 березня 2019.
  10. https://airflow.apache.org/project.html
  11. https://www.astronomer.io/
  12. https://cloud.google.com/composer/
  13. https://cloud.google.com/blog/products/gcp/cloud-composer-is-now-in-beta-build-and-run-practical-workflows-with-minimal-effort
  14. https://cloud.google.com/composer/docs/concepts/overview

Посилання