Запуск Spark задач на выполнение в YTsaurus

Установка клиента

Установите пакет ytsaurus-spyt:

$ pip install ytsaurus-spyt

Запуск задачи напрямую в YTsaurus (доступно с версии SPYT 1.76.0)

Данный способ подходит для случаев, когда нет потребности в непрерывной работе кластера. Он позволяет использовать ресурсы кластера только в случае реальной потребности в них. В сравнении с запуском приложений во внутреннем Standalone Spark кластере данный способ работает чуть дольше за счет того, что каждый раз необходимо поднимать отдельную операцию для запуска приложения, однако с другой стороны он позволяет освободить ресурсы сразу же, как только в них больше не будет необходимости.

Запуск задач напрямую в YTsaurus рекомендуется в следующих случаях:

  • Выполнение разовых расчетов.
  • Запуск задач, имеющих низкую периодичность (реже 1 раза в час).
  • Ad-hoc аналитика при помощи консольных утилит spark-shell или pyspark (Для аналитики в Jupyter пока что нужно использовать способ с созданием внутреннего standalone кластера).

Для того чтобы воспользоваться данным способом, необходимо выполнить следующие шаги:

  1. Активируйте конфигурацию SPYT при помощи команды source spyt-env.
  2. Загрузите исполняемый файл и его зависимости в Кипарис.
  3. Запустите задачу на выполнение при помощи следующей команды.
$ spark-submit --master ytsaurus://<cluster-name> --deploy-mode cluster --num-executors 5 --queue research yt:/<path to .py file or .jar file>

Опции:

  • --master — адрес прокси кластера;
  • --queue — название пула в планировщике, в котором нужно запустить расчёт

Назначение остальных опций соответствует их описанию в документации spark-submit (полный список выводится по команде spark-submit --help). Можно использовать почти все доступные опции за исключением следующих:

  • --conf spark.dynamicAllocation.enabled — в настоящий момент поддержка динамического выделения ресурсов не реализована, поэтому эту опцию лучше не выставлять в true;
  • --py-files, --files, --archives — с локальными файлами не работают, можно использовать только те, которые были предварительно загружены в Кипарис.

В сравнении со standalone кластером, в данном режиме не реализована поддержка History server. Для получения диагностической информации можно воспользоваться логами YTsaurus операций. Нужно учесть два момента: во-первых, доступны только логи, которые пишутся в stderr, поэтому нужно сделать соответствующие настройки логирования в запускаемом Spark приложении. Во-вторых, в настоящий момент драйвер и экзекьюторы запускаются в разных YTsaurus операциях, соответственно логи нужно смотреть и в той, и в другой.

Запуск standalone Spark кластера

Данный способ подходит при интенсивном использовании кластера. В данном режиме YTsaurus выделяет ресурсы под внутренний Standalone Spark кластер, который занимается выполнением расчетов. Этот режим рекомендуется использовать в следующих случаях:

  • Запуск задач с высокой периодичностью (более 1 раза в час). Эффективность достигается за счет того, что время запуска задачи в standalone кластере существенно меньше, чем время запуска операции в YTsaurus.
  • Ad-hoc аналитика в Jupyter-ноутбуках.
  • Ad-hoc аналитика с использованием Query tracker и livy.

Для запуска внутреннего standalone Spark кластера необходимо выполнить следующие шаги:

  1. Выберите пользователя, от имени которого необходимо запустить кластер. Код, который регулярно запускается на Spark, нужно загрузить в систему YTsaurus. У пользователя, от имени которого запущен кластер, должны быть права на чтение кода.

  2. Создайте директорию для служебных данных Spark, например my_discovery_path. Пользователь, от имени которого запущен кластер, должен иметь права на запись в директорию. Пользователи, которые будут запускать джобы на Spark, должны иметь права на чтение директории.

  3. Запустите кластер:

    $ spark-launch-yt \
    --proxy <cluster-name> \
    --pool  my_pool \
    --discovery-path my_discovery_path \
    --worker-cores 16 \
    --worker-num 5 \
    --worker-memory 64G
    

    Опции:

    • spark-launch-yt — запуск в Vanilla-операции YTsaurus с клиентского хоста;
    • --proxy — имя кластера;
    • --pool — вычислительный пул YTsaurus;
    • --spyt-version — директория для служебных данных Spark;
    • --worker-cores — количество ядер у воркера;
    • --worker-num — количество воркеров;
    • --worker-memory — количество памяти у каждого воркера;
    • --spark-cluster-versionверсия кластера (опционально).
  4. Запустите тестовый джоб на кластере:

    $ spark-submit-yt \
    --proxy <cluster-name> \
    --discovery-path my_discovery_path \
    --deploy-mode cluster \
    yt:///sys/spark/examples/smoke_test.py
    

    Опции:

    • spark-submit-yt — обертка над spark-submit, позволяет определить адрес мастера Spark из Vanilla-операции. Поиск производится по аргументам: proxy, id, discovery-path;
    • --proxy — имя кластера;
    • --discovery-path — директория для служебных данных Spark;
    • --deploy-mode (cluster или client) — режим запуска кластера;
    • --spyt-version — версия SPYT (опционально);
    • адрес файла с кодом в YTsaurus.

Работа с использованием внутреннего Spark кластера

  • spark-launch-yt

    Запуск Spark кластера внутри YTsaurus:

    $ spark-launch-yt \
    --proxy <cluster-name> \
    --pool my_pool \
    --discovery-path my_discovery_path \
    --worker-cores 16 \
    --worker-num 5 \
    --worker-memory 64G \
    --spyt-version 2.4.0
    
  • spark-discovery-yt

    Получить ссылки на UI мастера, операцию, Spark History Server:

    $ spark-discovery-yt \
    --proxy <cluster-name> \
    --discovery-path my_discovery_path
    
  • spark-submit-yt

    Запуск задач на кластере:

    $ spark-submit-yt \
    --proxy <cluster-name> \
    --discovery-path my_discovery_path \
    --deploy-mode cluster \
    yt:///sys/spark/examples/smoke_test.py
    

    Примечание

    Вместо некоторых аргументов команд можно установить переменные окружения, например: YT_PROXY — вместо --proxy.

    $ export YT_PROXY=<cluster-name>
    
    $ spark-submit-yt \
    --discovery-path my_discovery_path \
    --deploy-mode cluster \
    yt:///sys/spark/examples/smoke_test.py
    

Дополнительные параметры

О дополнительных параметрах при запуске кластера можно узнать в разделе Запуск кластера Spark.

Предыдущая