Apache Airflow
В данном документе будут описаны основные разделы такого инструмента как Apache Airflow.
Разделы Apache Airflow
Dags
Тут расположены все Даги (направленный ациклический граф).
В этом разделе есть возможность просмотреть краткую информацию по всем дагам:
Владелец, запуски, расписание, последний запуск, следующий запуск, информацию по таскам дага, и действия.
Зеленым обозначены успешные запуски, красным - запуски с ошибками.
Сами по себе даги представляют собой python скрипт, состоящий из функций и описания самого дага.
В Apache Airflow есть различные операторы, которые позволяют исполнять код. Например BashOperator, PostgresOperator, PythonOperator (код на Bash,PostgreSQL или Python).
Задачи в даге могут быть разделены на таски, а таски могут запущены как последовательно, так и параллельно.
Последовательность выполнения можно задать как автоматически (с помощью цикла), так и вручную (прописав все таски самостоятельно)
Рассмотрим пример как последовательного и параллельного исполнения тасков.
Для примера я приведу простой даг с использованием Python оператора, который будет исполнять код из функций.
В примере обозначены 3 функции : start_task, task_1, task_2, end_task.
from airflow import DAG
from airflow.operators.python import PythonOperator
from airflow.utils.dates import days_ago
from datetime import timedelta, datetime
dag = DAG(
dag_id='simple_dag_example',
schedule='@once',
start_date=datetime(2018, 11, 1),
)
def start_task():
print("Starting the DAG")
def task_1():
print("Running task 1")
def task_2():
print("Running task 2")
def end_task():
print("Ending the DAG")
start = PythonOperator(
task_id='start_task',
python_callable=start_task,
dag=dag,
)
t1 = PythonOperator(
task_id='task_1',
python_callable=task_1,
dag=dag,
)
t2 = PythonOperator(
task_id='task_2',
python_callable=task_2,
dag=dag,
)
end = PythonOperator(
task_id='end_task',
python_callable=end_task,
dag=dag,
)
start >> [t1, t2] >> end
Затем, каждой из функций присвоена таска:
start, t1, t2, end.
В каждой таске прописан оператор, который будет её исполнять.
В нашем случае это PythonOperator. Ему мы передаем id нашей таски, функцию таски
и даг.
После выполнения каждой таски должно выводиться соответствующее значение (например для start_task это значение - Starting the DAG)
Обозначения каждой таски необходимо указать порядок, в котором они будут исполняться.
В нашем случае - последовательное выполнение таски start,
затем параллельное выполнение тасок t1 и t2, после выполнения последних - исполняется таска end.
Данный пример будет представлен на видео.
После добавления файла .py в папку с дагами необходимо подождать некоторое время, пока аирфлоу проверит все зависимости. Как все будет готово новый даг отобразиться в списке.
Cluster Activity
В данном разделе можно посмотреть статистику по исполненным дагам.
Сверху представлена статистика на текущий момент:
Ниже представлена статистика за период:
Datasets
В Apache Airflow датасеты (Datasets) — это концепция, которая была введена в версии 2.4. Датасеты используются для организации и управления зависимостями между задачами в различных DAG’ах на основе данных, которыми они обмениваются или которые они используют.
Основные цели использования датасетов в Airflow:
- Связь DAG’ов через данные: Датасеты позволяют задавать зависимости между DAG’ами на основе данных. Например, если один DAG создает или обновляет данные, которые используются другим DAG’ом, вы можете явно указать эти зависимости через датасеты. Когда данные в определенном датасете обновляются, это может запустить другой DAG, который использует эти данные.
- Отслеживание состояния данных: Датасеты позволяют отслеживать, когда данные были обновлены или созданы. Это упрощает управление процессами, зависящими от этих данных, и позволяет строить более сложные и управляемые пайплайны.
- Избежание циклических зависимостей: Использование датасетов помогает предотвратить создание циклических зависимостей между DAG’ами. Поскольку Airflow не позволяет создавать циклы в графах зависимостей, датасеты обеспечивают удобный способ организации таких зависимостей, не нарушая ограничений DAG.
Security
В данной вкладке можно ознакомиться со всеми пользователями, правами и доступами
Browse
Здесь хранится вся информация по ранее запущенным дагам и таскам.
Когда была запущена та или иная джоба, какие даги были задействованы, какие таски были запущены и как они были завершены.
Со всеми логами можно ознакомиться тут.
Admin
Раздел Admin в Apache Airflow предоставляет административные функции, которые позволяют пользователям управлять различными аспектами работы системы. Вот инструкция по использованию этого раздела:
Variables
- Назначение: Переменные (Variables) используются для хранения глобальных настроек или данных, которые можно использовать в различных DAG’ах. Это удобно для управления конфигурацией или сохранения небольших данных, которые могут изменяться.
- Что можно сделать:
- Добавить новую переменную.
- Просматривать, редактировать или удалять существующие переменные.
- Использовать переменные в коде DAG’ов через Variable.get(‘имя_переменной’).
Configurations
- Назначение: Этот пункт позволяет просматривать текущие конфигурации Airflow, такие как настройки из файла airflow.cfg. Это полезно для понимания текущих параметров системы, например, где сохраняются логи или как настроен планировщик.
- Что можно сделать:
- Просматривать все параметры конфигурации. Однако изменять их необходимо непосредственно в файле конфигурации или через переменные окружения.
Connections
- Назначение: Управление подключениями (Connections) к внешним системам, таким как базы данных, API, FTP-серверы и другие сервисы. Эти подключения используются для обмена данными между Airflow и этими системами.
- Что можно сделать:
- Создать новое подключение.
- Редактировать или удалять существующие подключения.
- Указать детали подключения, такие как хост, логин, пароль, порт и дополнительные параметры.
Plugins
- Назначение: Плагины (Plugins) в Airflow позволяют расширять функциональность платформы, добавляя кастомные операторы, сенсоры, хуки и другие компоненты. В этом разделе можно просматривать активные плагины.
- Что можно сделать:
- Просматривать список установленных плагинов и их компоненты, такие как кастомные операторы, сенсоры и т. д.
Providers
- Назначение: Providers (Провайдеры) - это пакеты, которые содержат операторы, сенсоры, хуки и другие компоненты для работы с конкретными сервисами или продуктами (например, Clickhouse, Google Cloud, Docker и т.д.). Без установленных провайдеров невозможно будет подключиться к тому или иному сервису. Перед началом работы над проектом необходимо удостовериться в наличие всех необходимых провайдеров.
- Что можно сделать:
- Просматривать список провайдеров, установленных в вашей среде Airflow.
- Проверять версии и детали компонентов, которые предоставляет каждый провайдер.
Pools
- Назначение: Пулы (Pools) позволяют ограничивать количество одновременно выполняемых задач для управления использованием ресурсов (например, ограничить количество одновременных подключений к базе данных).
- Что можно сделать:
- Создать новый пул.
- Просматривать, редактировать или удалять существующие пулы.
- Устанавливать размер пула, т.е. количество задач, которые могут выполняться одновременно в этом пуле.
XComs
- Назначение: XComs (Cross-Communication) используются для передачи небольших фрагментов данных между задачами внутри одного DAG’а. Например, одна задача может передать результат своего выполнения другой задаче.
- Что можно сделать:
- Просматривать все XCom-записи, созданные задачами.
- Удалять ненужные или устаревшие XCom-записи.
Эти пункты меню предоставляют администратору инструменты для управления различными аспектами работы Apache Airflow, включая конфигурацию системы, управление подключениями, переменными, пулами ресурсов и передачей данных между задачами.
Примеры будут представлены в видео.