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

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

Yandex Managed Service for Apache Spark™ — это управляемый сервис для развертывания кластеров Apache Spark™ и запуска Spark/PySpark-заданий в инфраструктуре Yandex Cloud.

Yandex Managed Service for Apache Spark™ позволяет:
* Разворачивать кластеры Apache Spark™ и управлять ими через консоль управления, Terraform и API без необходимости вручную администрировать кластеры и виртуальные машины. 
* Конфигурировать пул хостов для драйверов и пул хостов для исполнителей независимо друг от друга.
* Запускать задания на Python, Scala и Java, гибко управляя их настройками.
* Декларативно определять зависимости заданий, включая Pip-, Deb- и Maven-пакеты.
* Следить за ходом выполнения заданий в веб-интерфейсе Spark-приложений и анализировать результаты с помощью логов в Yandex Cloud Logging и [Spark History Server](https://spark.apache.org/docs/latest/monitoring.html).
* Выгружать результаты выполнения заданий в Object Storage, базы данных и аналитические витрины.
* Подключать Apache Hive™ Metastore в конфигурации кластера или в параметрах задания.
* Задавать предпочтительный день недели и время для технического обслуживания кластера.

## Понятия и сущности {#concepts}

Основная сущность, которой оперирует сервис Yandex Managed Service for Apache Spark™, — _[кластер](../../glossary/cluster.md) Apache Spark™_.

При запуске в кластере [задания](#job) (job) создается приложение Spark. Приложение включает в себя следующие процессы:
* Драйвер — управляющий процесс, который строит план задания, разбивает работу на стадии (stages) и операции (tasks), следит за очередью задач, а также запрашивает создание исполнителей и освобождает их.
* Исполнители — процессы, отвечающие за выполнение отдельных задач в рамках задания.

### Пулы хостов {#pools}

Кластер Apache Spark™ состоит из трех групп хостов (пулов):

* Пул хостов для драйверов — служит для запуска драйверов и ряда служебных компонентов (работа с сетью, логами, метриками и т. д.).

* Пул хостов для исполнителей — служит для запуска исполнителей и некоторых служебных компонентов.

* Вспомогательный пул — служит для запуска Spark History Server и других системных компонентов.

Пул хостов для драйверов и пул хостов для исполнителей можно конфигурировать, задавая количество хостов в каждом пуле и [их класс](instance-types.md). Количество хостов в каждом из двух пулов может быть фиксированным или изменяться динамически. Конфигурирование пулов выполняется при [создании](../operations/cluster-create.md) или [изменении](../operations/cluster-update.md) кластера Apache Spark™. 

### Задание {#job}

Задание представляет собой направленный ациклический граф (DAG — directed acyclic graph), который автоматически разбивается планировщиком Spark на последовательность стадий (stages), где каждая стадия состоит из набора параллельно выполняемых операций (tasks).

Задание — это спецификация запуска приложения Spark на выбранном кластере Apache Spark™.

В задание входят:
* Целевой кластер Apache Spark™.

  {% note info %}

  Часть [конфигурации кластера](#cluster-configuration) задает параметры задания по умолчанию и может быть переопределена на уровне задания. Не могут быть переопределены: сетевые настройки, сервисный аккаунт, Deb-пакеты, использование Spark History Server и настройки логирования.

  {% endnote %}

* Тип задания — `Spark` для Java и Scala или `PySpark` для Python.
* Исполняемый модуль и точка входа — JAR-файл и основной класс для задания типа `Spark` или PY-файл для задания типа `PySpark`.
* Аргументы запуска.
* [Свойства Apache Spark™](spark-properties.md) — ресурсы запуска, параметры динамической аллокации и параллелизма, SQL-параметры и т. д.
* Библиотеки и файлы — JAR-файлы, Maven-пакеты, дополнительные файлы и архивы.

## Параллелизм и автомасштабирование {#parallel}

На одном хосте для драйверов может одновременно выполняться одно или несколько заданий. Точное число зависит от:
* класса [хостов для драйверов](instance-types.md), то есть объема памяти и количества ядер у одного хоста;
* объема ресурсов, которые запрашивает каждое [задание](#job);
* объема зарезервированных под внутренние нужды ресурсов хоста.

При этом число хостов для драйверов может:
* быть фиксированным, если автомасштабирование хостов для драйверов выключено;
* изменяться динамически в зависимости от количества свободных ядер и объема свободной памяти, если автомасштабирование хостов для драйверов включено.

Таким образом, количество заданий, которые могут одновременно выполняться на кластере Apache Spark™, зависит от следующих факторов:
* заданного числа хостов для драйверов или настроек автомасштабирования;
* класса хостов;
* параметров каждого задания;
* объема зарезервированных под внутренние нужды ресурсов.


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

* [Apache Spark™: как устроен популярный инструмент для работы с большими данными](https://yandex.cloud/ru/blog/apache-spark-overview)