Прямой сабмит 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