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

Apache Airflow

Матеріал з Вікіпедії — вільної енциклопедії.
Apache Airflow
ТипETL
РозробникApache Software Foundation, Airbnb
Стабільний випуск1.10.1
Мова програмування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-а задаються операторами (англ. Operators). Існує багато різних класів операторів, наприклад[3]:

  • BashOperator - виконує команди Bash
  • PythonOperator - викликає довільну функцію мовою Python
  • SimpleHttpOperator - надсилає HTTP запит
  • MySqlOperator, SqliteOperator, PostgresOperator, JdbcOperator, і т.п. - виконує SQL запит
  • Sensor - певний час очікує виконання якоїсь умови

Існують також різноманітні спеціальні оператори, наприклад цілий набір для виконання різних дій з Google Cloud Platform[4]

Оператор з параметрами для його запуску описує задачу. Задачу можна виконувати багато разів, і кожне виконання називають екземпляром задачі (англ. task instance). Екземпляр задачі може перебувати в різних станах: запланована (англ. scheduled), виконується (англ. running), успішно виконана (англ. success), невдача (англ. failed), невдача залежності (англ. upstream failed), і т.д.[5]

Деякі параметри операторів являють собою шаблони Jinja, які перед виконанням заповнюються змінними контексту. Це можна застосовувати наприклад для динамічної побудови команд Bash.[6]

Історія

Проект розпочатий Максимом Бушеманом (фр. Maxime Beauchemin) в Airbnb в 2014-му році. Офіційно переведений на Github Airbnb в 2015, а в травні 2016 приєднаний до інкубатора Apache Software Foundation.[7]

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

Google Cloud Composer

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

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

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

Див. також

Зноски

  1. https://airflow.incubator.apache.org/license.html
  2. https://airflow.readthedocs.io/en/latest/
  3. а б в https://airflow.apache.org/concepts.html
  4. https://airflow.apache.org/howto/operator.html#google-cloud-platform-operators
  5. https://github.com/apache/incubator-airflow/blob/master/airflow/utils/state.py#L50
  6. https://airflow.apache.org/concepts.html#jinja-templating
  7. https://airflow.apache.org/project.html
  8. https://cloud.google.com/composer/
  9. https://cloud.google.com/blog/products/gcp/cloud-composer-is-now-in-beta-build-and-run-practical-workflows-with-minimal-effort
  10. https://cloud.google.com/composer/docs/concepts/overview

Посилання