[Документация Yandex Cloud](../../index.md) > [Yandex Managed Service for Apache Airflow™](../index.md) > Концепции > Взаимосвязь ресурсов сервиса

# Взаимосвязь ресурсов в Managed Service for Apache Airflow™

Сервис Managed Service for Apache Airflow™ помогает разворачивать и поддерживать [кластеры](../../glossary/cluster.md) серверов [Apache Airflow™](https://airflow.apache.org/) в инфраструктуре Yandex Cloud.

## Об Apache Airflow™ {#about-the-service}

Apache Airflow™ — это платформа с открытым исходным кодом для создания, планирования и мониторинга пакетно ориентированных _воркфлоу_. Воркфлоу определяет взаимосвязь задач и последовательность их выполнения и представлен в виде направленного ациклического графа — DAG (Directed Acyclic Graph). Направленные ациклические графы в Apache Airflow™ можно применять для автоматизации и запуска по расписанию любых процессов, например [обработки данных в Apache Spark™](../tutorials/data-processing-automation.md).

В Apache Airflow™ используется подход <q>Workflows as code</q>. Он подразумевает, что каждый воркфлоу реализуется с помощью скрипта на Python 3. Файл с таким скриптом называется _DAG-файлом_. В нем описываются задачи, расписание их запуска и зависимости между ними. Такой подход позволяет хранить воркфлоу в [системе контроля версий](../../glossary/vcs.md), запускать тесты и подключать нужные технологии для воркфлоу.

Apache Airflow™ не применяется для потоковой и непрерывной обработки данных. Если она нужна, можно создать решение на основе сервиса [Yandex Managed Service for Apache Kafka®](../../managed-kafka/index.md).

Более подробная информация приведена в документации [Apache Airflow™](https://airflow.apache.org/docs/apache-airflow/stable/#).

## Архитектура Managed Service for Apache Airflow™ {#architecture}

Архитектура сервиса Managed Service for Apache Airflow™ представлена на схеме:

![architecture](../../_assets/managed-airflow/architecture.svg)

Каждый [кластер Apache Airflow™](#cluster) запускается в отдельной группе узлов Kubernetes, которая включает в себя необходимую сетевую инфраструктуру: виртуальную сеть, группу безопасности и сервисный аккаунт. Группы узлов изолированы друг от друга как средствами виртуальных сетей, так и средствами самого Kubernetes. Группы узлов управляются общим Kubernetes-мастером, а кластеры Apache Airflow™ используют для хранения данных общий кластер PostgreSQL.

Чтобы обеспечить изолированное хранение данных, использование кластера PostgreSQL в сервисе ограничено:

* Для каждого кластера Apache Airflow™ в кластере PostgreSQL создается отдельная база данных. Кластер может подключаться только к своей базе данных.
* Кластер Apache Airflow™ может работать только с теми таблицами, которые созданы средствами самого Apache Airflow™. Произвольное создание и изменение схем, таблиц, функций, процедур и триггеров запрещено.
* Скорость чтения и записи данных, а также объем хранимой в базе информации ограничены.

    {% note warning %}

    Злонамеренный обход этих ограничений приведет к блокировке кластера согласно пункту 7 [правил допустимого использования сервисов](https://yandex.ru/legal/cloud_aup/?lang=ru).

    {% endnote %}

## Кластер Apache Airflow™ {#cluster}

Основная сущность, которой оперирует сервис Managed Service for Apache Airflow™, — _кластер_. В нем развернуты [компоненты Apache Airflow™](#components). Ресурсы кластера могут находиться в разных зонах доступности. Подробнее о географии Yandex Cloud в разделе [Обзор платформы](../../overview/concepts/geo-scope.md).

Воркфлоу, запущенный в кластере, может обращаться к любому ресурсу Yandex Cloud в пределах облачной сети, в которой находится кластер. Например, воркфлоу может отправлять запросы виртуальной машине Yandex Cloud или кластеру управляемой базы данных (БД). Так можно построить воркфлоу с использованием нескольких ресурсов. Например, воркфлоу забирает данные из одной БД, обрабатывает их и отправляет в другую БД или [Yandex Data Processing](../../data-proc/index.md).


## Основные компоненты Apache Airflow™ {#components}

Основные компоненты Apache Airflow™ представлены на схеме:

![components](../../_assets/managed-airflow/components.svg)

Компоненты Apache Airflow™:

* _Веб-сервер_ — сервер в Yandex Cloud, на котором размещается экземпляр Apache Airflow™. Веб-сервер получает команды от пользователей, отправленные через веб-интерфейс Apache Airflow™, проверяет, запускает и отлаживает Python-скрипты в DAG-файлах.

   Подробнее о работе с веб-интерфейсом в [документации Apache Airflow™](https://airflow.apache.org/docs/apache-airflow/stable/ui.html).

* _Планировщик_ — сервер в Yandex Cloud, который управляет расписанием запуска задач. Планировщик получает информацию о расписании из DAG-файлов. По этому расписанию он сообщает воркерам, что пора запустить DAG-файл.

* _DAG-процессор_ — сервер в Yandex Cloud для обработки DAG-файлов.

   {% note warning %}
          
   Компонент _DAG-процессор_ доступен в версии Apache Airflow™ 3.0 и выше.
          
   {% endnote %}

* _Воркеры_ — исполнители задач, указанных в DAG-файлах. Воркеры выполняют задачи по расписанию от планировщика.

* [_Triggerer_](#triggerer) — служба, которая освобождает воркер в случае его простоя при выполнении задания с длительным ожиданием события (опциональный компонент).

* _Хранилище DAG-файлов_ — [бакет Yandex Object Storage](../../storage/concepts/bucket.md), в котором хранятся DAG-файлы. К этому хранилищу имеют доступ веб-сервер, планировщик, воркеры и Triggerer.

Чтобы обеспечить отказоустойчивость и повысить производительность, веб-серверы, планировщики и Triggerer могут существовать в нескольких экземплярах. Их количество определяется во время создания кластера.

Для воркеров задается минимальное и максимальное количество экземпляров также при создании кластера. Их количество будет масштабироваться динамически. Эта функциональность обеспечивается благодаря использованию в сервисе контроллера [KEDA](https://airflow.apache.org/docs/helm-chart/stable/keda.html).

### Конфигурации компонентов Apache Airflow™ {#presets}

Конфигурация определяет вычислительные мощности, которые выделяются для веб-сервера, планировщика, воркеров и службы Triggerer. Доступны следующие [типы конфигураций](instance-types.md):

 * **standard** — с соотношением количества гигабайт RAM к количеству vCPU 4:1.
 * **cpu-optimized** — с уменьшенным соотношением количества гигабайт RAM к количеству vCPU (2:1). Такие конфигурации могут быть полезны для кластеров с повышенными требованиями к производительности процессора.

Конфигурации можно выбрать при [создании кластера](../operations/cluster-create.md) или изменить при его [редактировании](../operations/cluster-update.md).

## Triggerer {#triggerer}

Служба Triggerer позволяет сократить время простоя воркеров.

В графах DAG могут быть задачи, которые отправляют запрос во внешнюю систему (например, кластер Apache Spark™) и ожидают ответ от нее в течение некоторого времени. Если использовать [стандартные операторы](https://airflow.apache.org/docs/apache-airflow/stable/core-concepts/operators.html), задача занимает воркер, пока ожидает ответа. В результате воркер простаивает. Когда такое происходит с большим количеством воркеров, образуются очереди задач, и скорость их запуска и выполнения снижается.

Избежать такой ситуации позволяют _отложенные операторы_ (deferrable operators). С их помощью задача приостанавливается, освобождается воркер, и опрос внешней системы выделяется в отдельный процесс — _триггер_ (trigger). Все триггеры независимо друг от друга (асинхронно) обрабатываются службой Triggerer, для которой в кластере выделены отдельные ресурсы. При получении ответа от внешней системы триггер срабатывает, и планировщик возвращает задачу воркеру.

Процесс работы со службой Triggerer представлен на схеме:

![triggerer](../../_assets/managed-airflow/triggerer.svg)

Подробнее об отложенных операторах, триггерах и службе Triggerer в документации [Apache Airflow™](https://airflow.apache.org/docs/apache-airflow/stable/authoring-and-scheduling/deferring.html#deferrable-operators-triggers).


## Примеры использования {#examples}

* [Автоматизация работы с Yandex Data Processing](../tutorials/data-processing-automation.md)
* [Автоматизация задач Yandex Query с помощью Yandex Managed Service for Apache Airflow™](../tutorials/airflow-auto-tasks.md)

#### Полезные ссылки {#see-also}

* [Apache Airflow™ в Yandex Cloud: управляемый сервис или собственное развёртывание](https://yandex.cloud/ru/blog/posts/2025/05/apache-airflow-in-yc)