Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Data Processing
  • Начало работы
    • Все инструкции
    • Подготовка и использование виртуальных окружений Python
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Публичные материалы
  • Вопросы и ответы
  • Обучающие курсы

В этой статье:

  • Подготовка виртуального окружения Python
  • Использование виртуального окружения
  • Использование виртуального окружения при обычном запуске PySpark-заданий
  • Использование виртуального окружения в интеграции кластера Yandex Data Processing с Yandex DataSphere
  • Использование виртуального окружения в ноутбуке Zeppelin
  1. Пошаговые инструкции
  2. Подготовка и использование виртуальных окружений Python

Подготовка и использование виртуальных окружений Python

Статья создана
Yandex Cloud
Обновлена 16 декабря 2024 г.
  • Подготовка виртуального окружения Python
  • Использование виртуального окружения
    • Использование виртуального окружения при обычном запуске PySpark-заданий
    • Использование виртуального окружения в интеграции кластера Yandex Data Processing с Yandex DataSphere
    • Использование виртуального окружения в ноутбуке Zeppelin

При использовании PySpark в кластере Yandex Data Processing часто бывает нужно установить или обновить пакеты Python. При этом изменение основного окружения Python в кластере может оказаться слишком трудоемким и нецелесообразным. В качестве альтернативы при запуске каждого задания можно использовать изолированные виртуальные окружения:

  1. Подготовьте виртуальное окружение.

    Для обеспечения совместимости подготовка виртуального окружения выполняется на временном кластере Yandex Data Processing. Затем виртуальное окружение помещается в архив, который сохраняется в бакете Object Storage.

  2. Используйте виртуальное окружение из архива при запуске заданий в кластерах Yandex Data Processing.

    Виртуальное окружение Python можно использовать:

    • При обычном запуске PySpark-заданий.
    • При запуске PySpark-заданий в кластере Yandex Data Processing, интегрированного с Yandex DataSphere.
    • При запуске PySpark-заданий в ноутбуке Zeppelin.

Подготовка виртуального окружения PythonПодготовка виртуального окружения Python

  1. Создайте сервисный аккаунт с ролями dataproc.agent и dataproc.provisioner.

  2. В Object Storage создайте бакет для хранения логов кластера и архива с виртуальным окружением.

  3. Настройте ACL бакета, предоставив созданному сервисному аккаунту разрешение READ и WRITE.

  4. Создайте временный кластер Yandex Data Processing. При создании укажите:

    • Версию Yandex Data Processing, такую же, как у кластера, на котором планируется использовать окружение. Это необходимо для обеспечения совместимости.
    • Компоненты:
      • SPARK;
      • YARN.
    • Бакет для хранения логов.
    • Сервисный аккаунт с доступом к бакету.
    • (Опционально) Публичный доступ к подкластеру с хостом-мастером.

    Настройки ресурсов хостов рекомендуется указать минимальными.

  5. Подключитесь по SSH к временному кластеру Yandex Data Processing.

  6. Запустите встроенный инструмент Virtualenv для работы с виртуальными окружениями:

    python -m venv pyspark_venv && \
    source pyspark_venv/bin/activate
    
  7. Установите venv-pack и другие необходимые вам модули окружения Python:

    pip install venv-pack <список_модулей>
    

    Пример:

    pip install venv-pack pyarrow pandas catboost
    
  8. Упакуйте сформированное окружение в архив с помощью команды venv-pack:

    venv-pack -o <имя_архива>.tar.gz
    
  9. Отправьте архив с окружением в подготовленный ранее бакет Object Storage:

    hdfs dfs -copyFromLocal <имя_архива>.tar.gz s3a://<имя_бакета>/
    
  10. Удалите временный кластер Yandex Data Processing, чтобы за него не списывалась плата.

Использование виртуального окруженияИспользование виртуального окружения

Чтобы использовать подготовленное виртуальное окружение в кластере Yandex Data Processing, предоставьте сервисному аккаунту кластера доступ на чтение из бакета, в котором хранится архив. Это можно сделать двумя способами:

  • Отредактируйте ACL бакета, выдав сервисному аккаунту кластера права на чтение (READ).
  • Назначьте сервисному аккаунту роль storage.viewer.

Использование виртуального окружения при обычном запуске PySpark-заданийИспользование виртуального окружения при обычном запуске PySpark-заданий

При создании задания PySpark укажите следующие значения для свойств Spark на уровне задания:

  • spark.submit.deployMode=cluster — режим размещения драйвера.

    Запуск заданий должен выполняться в режиме cluster, чтобы виртуальное окружение было правильно подготовлено. Подробнее о режиме размещения драйвера см. в разделе Распределение ресурсов.

  • spark.yarn.dist.archives='s3a://<имя_бакета>/<имя_архива>.tar.gz#<псевдоним>' — путь к архиву с подготовленным окружением.

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

  • spark.yarn.appMasterEnv.PYSPARK_PYTHON=./<псевдоним>/bin/python — переопределение команды запуска интерпретатора Python для процесса YARN Application Master.

  • spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON=./<псевдоним>/bin/python — переопределение команды запуска интерпретатора Python для драйвера задания.

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

Использование виртуального окружения в интеграции кластера Yandex Data Processing с Yandex DataSphereИспользование виртуального окружения в интеграции кластера Yandex Data Processing с Yandex DataSphere

Интеграция Yandex DataSphere и Yandex Data Processing основана на использовании компонента Apache Livy в составе Yandex Data Processing. Подробнее о настройке интеграции с Yandex DataSphere см. в разделе Интеграция с сервисом Yandex DataSphere.

Чтобы использовать виртуальные окружения Python в интеграции с Yandex DataSphere, выполните дополнительные настройки:

  1. На стороне кластера Yandex Data Processing установите режим размещения драйвера cluster. Для этого при изменении кластера передайте значение свойства компонента livy:livy.spark.deploy-mode=cluster.

    Подробнее о режиме размещения драйвера см. в разделе Распределение ресурсов.

  2. На стороне сервиса Yandex DataSphere создайте сессию Livy со следующими настройками:

    %create_livy_session \
        --cluster <имя_или_идентификатор_кластера> --id <идентификатор_сессии_Livy> \
        --conf spark.yarn.dist.archives=s3a://<имя_бакета>/<имя_архива>.tar.gz#<псевдоним> \
        --conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=./<псевдоним>/bin/python \
        --conf <прочие_параметры_контекста_Spark> ...
    

    Где:

    • <имя_или_идентификатор_кластера> — имя или идентификатор используемого в интеграции кластера Yandex Data Processing.
    • <идентификатор_сессии_Livy> — произвольная строка, идентификатор сессии Livy в рамках кластера.
    • <имя_бакета> — бакет, в котором лежит архив с окружением.
    • <имя_архива> — подготовленный архив с окружением Python.
    • <псевдоним> — псевдоним окружения, может быть любым. Псевдоним будет служить именем подкаталога, в который будет распакован архив.
    • <прочие_параметры_контекста_Spark> задаются при необходимости. Полный список параметров приведен в документации Spark.

Укажите созданную сессию при запуске кода Python в кластере. Зависимости, включенные в состав виртуального окружения, будут доступны для использования.

Использование виртуального окружения в ноутбуке ZeppelinИспользование виртуального окружения в ноутбуке Zeppelin

Чтобы использовать виртуальные окружения Python при работе в ноутбуке Zeppelin:

  1. В интерфейсе Zeppelin перейдите в настройки интерпретатора (Interpreter) и отредактируйте блок spark, установив режим работы контекста Spark в значения Per Note и Isolated. Таким образом разные ноутбуки смогут задействовать разные виртуальные окружения.

  2. Создайте новую ячейку %spark.conf и передайте в ней переменные для сессии Spark:

    %spark.conf
    spark.submit.deployMode cluster
    spark.yarn.dist.archives s3a://<имя_бакета>/<имя_архива>.tar.gz#<псевдоним>
    spark.yarn.appMasterEnv.PYSPARK_PYTHON ./<псевдоним>/bin/python
    spark.pyspark.python ./<псевдоним>/bin/python
    

    Где:

    • spark.submit.deployMode cluster — режим размещения драйвера.

      Запуск заданий должен выполняться в режиме cluster, чтобы виртуальное окружение было правильно подготовлено. Подробнее о режиме размещения драйвера см. в разделе Распределение ресурсов.

    • spark.yarn.dist.archives 's3a://<имя_бакета>/<имя_архива>.tar.gz#<псевдоним>' — путь к архиву с подготовленным окружением.

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

    • spark.yarn.appMasterEnv.PYSPARK_PYTHON ./<псевдоним>/bin/python — переопределение команды запуска интерпретатора Python для процесса YARN Application Master.

    • spark.pyspark.python ./<псевдоним>/bin/python — переопределение команды запуска интерпретатора Python для драйвера задания.

    При выполнении следующей ячейки, использующей Spark (например, ячейки в режимах %spark.pyspark или %spark.sql) будет выполнено создание сессии Spark с указанными настройками. В этой сессии будут доступны зависимости, включенные в состав виртуального окружения.

Была ли статья полезна?

Предыдущая
Диагностика и устранение проблем производительности Spark-приложений
Следующая
Все руководства
Проект Яндекса
© 2025 ООО «Яндекс.Облако»