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

Конфигурирование YTsaurus операции
Помимо стандартных параметров Spark для драйвера и экзекьюторов дополнительно можно конфигурировать операции и таски через соответствующие conf параметры spark.ytsaurus.{driver|executor}.{operation|task}.parameters. В качестве значения указывается yson-строка с допустимыми параметрами ванила операции. Например, можно задать тип и объем подключаемых дисков:
--conf spark.ytsaurus.executor.task.parameters='{"disk_request"={"disk_space"=1234567;
"account"="disk_account_name";
"medium_name"="ssd_slots_physical";};
}'
Полный список параметров можно посмотреть в разделе опции операции.
Преимущества подхода
- Эффективное использование ресурсов — выделение по требованию, минимум простоя.
- Простое управление — единый уровень контроля вместо дублирования (YTsaurus + Standalone).
- Гибкость — работа без потерь при низкой загрузке.
- Быстрый старт задач — нет нужды предварительно поднимать кластер.
- Лёгкая миграция — совместимость с другими кластерами (включая Hadoop) за счёт стандартного SparkAPI.
Выполнение локальных файлов
Начиная с версии SPYT 2.4.0 при запуске задач напрямую в YTsaurus можно указывать локальные файлы в качестве исполняемых модулей и зависимостей без их предварительной загрузки на Кипарис. В этом случае локальные файлы будут предварительно загружены в файловый кеш на Кипарисе и затем будут оттуда использованы в приложении. При повторном запуске будут использоваться уже закешированные файлы. Пример команды spark-submit для данного способа приведен ниже:
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