---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.6
alternate:
  - https://ytsaurus.tech/docs/en/user-guide/data-processing/spyt/direct-submit/desc.md
  - https://ytsaurus.tech/docs/ru/user-guide/data-processing/spyt/direct-submit/desc.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ytsaurus.tech/docs/ru/llms.txt

<!-- source: ru/_includes/user-guide/data-processing/spyt/direct-submit/desc.md -->
# Прямой сабмит SPYT

В данном разделе приводится верхнеуровневое описание прямого сабмита в YTsaurus и его компонент.

Запуск Spark приложений в режиме прямого сабмита описан в отдельном [разделе](https://ytsaurus.tech/docs/ru/user-guide/data-processing/spyt/launch.md#submit).

## Принцип работы { #explanation }

Ключевая идея заключается в том, что Spark делегирует управление ресурсами планировщику YTsaurus.

### Выделение ресурсов для драйвера { #driver-resources }

- **Cluster mode (Кластерный режим)**: Драйвер также запускается в отдельной Vanilla-операции внутри кластера YTsaurus. В этом режиме жизненный цикл драйвера (включая логирование, мониторинг и перезапуск при сбоях) полностью контролируется YTsaurus. Подходит для production задач.
- **Client mode (Клиентский режим)**: Драйвер запускается на клиентском хосте — например, на локальной машине разработчика или в Jupyter-ноутбуке. Этот режим удобен для отладки и интерактивной работы, так как обеспечивает прямой доступ к логам и состоянию драйвера.

  {% note warning "Внимание" %}

  В клиентском режиме должен быть обеспечен сетевой доступ между экзекьюторами и драйвером.

  {% endnote %}

### Выделение ресурсов для экзекьюторов { #executor-resources }

В данном режиме планировщик выделяют ресурсы экзекьюторам напрямую в рамках отдельной Vanilla операции на кластере YTsaurus. Джоба в составе операции соответствует одному экзекьютору Spark. Спецификация экзекьюторов (количество CPU, объем памяти, тип диска и т.п.) описаны в разделе Task в спецификации операции. Возможно описание разных профилей ресурсов для экзекьюторов Spark для задач с неоднородной нагрузкой в течение жизенного цикла.

![](../../../../../images/spyt-direct-submit-operation-concept.png){ .center }

### Конфигурирование YTsaurus операции  { #operation-config }

Помимо стандартных параметров Spark для драйвера и экзекьюторов дополнительно можно конфигурировать операции и таски через соответствующие conf параметры `spark.ytsaurus.{driver|executor}.{operation|task}.parameters`. В качестве значения указывается yson-строка с допустимыми параметрами ванила операции. Например, можно задать тип и объем подключаемых дисков:
```bash
--conf spark.ytsaurus.executor.task.parameters='{"disk_request"={"disk_space"=1234567;
                                                 "account"="disk_account_name";
                                                 "medium_name"="ssd_slots_physical";};
                                                }'
```
Полный список параметров можно посмотреть в разделе [опции операции](https://ytsaurus.tech/docs/ru/user-guide/data-processing/operations/operations-options.md).

### Использование Docker-образов и Porto-слоёв { #images }

При прямом сабмите Spark-приложений в YTsaurus для задач драйвера и экзекьюторов можно использовать как Docker-образы, так и Porto-слои. Это позволяет подготовить окружение выполнения с нужными системными библиотеками, Python-пакетами и другими зависимостями.

Информацию о сборке собственного Docker-образа можно найти в [разделе про конфигурирование кластера](https://ytsaurus.tech/docs/ru/user-guide/data-processing/spyt/cluster/configuration.md#build-image).

Передача Docker-образа или Porto-слоёв выполняется через дополнительные параметры:

```bash
OP_SPEC='{"docker_image"="[REGISTRY/]IMAGE:TAG";}'

spark-submit --master "ytsaurus://<cluster-host>:<port>" \
             --deploy-mode cluster \
             --num-executors 1 \
             --queue <pool> \
             --conf spark.ytsaurus.executor.task.parameters="$OP_SPEC" \
             --conf spark.ytsaurus.driver.task.parameters="$OP_SPEC" \
             ./spark-job.py
```

Подробнее можно прочитать в разделе [образы корневой файловой системы](https://ytsaurus.tech/docs/ru/user-guide/data-processing/layers/layer-paths.md).

## Преимущества подхода { #advantages }

- **Эффективное использование ресурсов** — выделение по требованию, минимум простоя.
- **Простое управление** — единый уровень контроля вместо дублирования (YTsaurus + Standalone).
- **Гибкость** — работа без потерь при низкой загрузке.
- **Быстрый старт задач** — нет нужды предварительно поднимать кластер.
- **Лёгкая миграция** — совместимость с другими кластерами (включая Hadoop) за счёт стандартного SparkAPI.

## Выполнение локальных файлов { #submit-local }

Начиная с версии SPYT 2.4.0 при запуске задач напрямую в YTsaurus можно указывать локальные файлы в качестве исполняемых модулей и зависимостей без их предварительной загрузки на Кипарис. В этом случае локальные файлы будут предварительно загружены в файловый кеш на Кипарисе и затем будут оттуда использованы в приложении. При повторном запуске будут использоваться уже закешированные файлы. Пример команды `spark-submit` для данного способа приведен ниже:

```bash
spark-submit --master ytsaurus://<cluster name> \
             --deploy-mode cluster \
             --num-executors 5 \
             --executor-cores 4 \
             --py-files ~/path/to/my/dependencies.py \
             ~/path/to/my/script.py
```
<!-- endsource: ru/_includes/user-guide/data-processing/spyt/direct-submit/desc.md -->
