Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
Yandex DataSphere
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Управление сообществом
      • Создать сообщество
      • Добавить пользователя в сообщество
      • Добавить канал связи
      • Привязать платежный аккаунт
      • Посмотреть детализацию расходов
      • Удалить сообщество
    • Управление проектом
      • Создать проект
      • Добавить пользователя в проект
      • Выбрать версию Python
      • Изменить размер хранилища проекта
      • Изменить настройки проекта
      • Задать ограничения для проекта
      • Удалить ноутбук или проект
    • Работа в ноутбуке
      • Выбрать вычислительные ресурсы
      • Установить пакеты
      • Очистить состояние интерпретатора
      • Примеры кода в ноутбуке
      • Работа с Git
      • Запустить Docker-контейнер в отдельной ячейке
    • Работа с ресурсами
      • Работа с секретами
      • Работа с контрольными точками
      • Работа с шаблонами Data Proc
      • Работа с Docker-образами
      • Работа с датасетами
    • Подключение к источникам данных
      • Подключение к хранилищу S3
      • Подключение к базе данных ClickHouse
      • Подключение к базе данных PostgreSQL
      • Подключение к Яндекс Диску
      • Подключение к Google Drive
    • Развертывание эксплуатации моделей
      • Создать ноду с кодом на Python
      • Изменить ноду
      • Удалить ноду
      • Настроить окружение ноды
      • Отправить запрос в ноду
      • Создать алиас
      • Изменить алиас
      • Удалить алиас
    • Совместный доступ
      • Публикация ноутбука
      • Экспорт проекта
    • Как перенести работу в новый интерфейс
  • Концепции
    • О сервисе DataSphere
    • Взаимосвязь ресурсов в DataSphere
    • Сообщества
    • Управление расходами
    • Проект и его окружение
      • Проект
      • Конфигурации вычислительных ресурсов
      • Состояние интерпретатора
      • Список предустановленного ПО
      • Режим раннего доступа
    • Вычисления и обучение моделей
      • Доступные команды
      • Служебные команды #pragma
      • Фоновые операции
      • EA — Специальные фоновые ячейки
      • Вычисления на кластерах Apache Spark™
    • Ресурсы
      • Обзор
      • Секреты
      • Docker-образы
      • Контрольные точки
      • Датасеты
      • Шаблоны Data Proc
    • Эксплуатация моделей
    • Квоты и лимиты
  • Практические руководства
    • Все руководства
    • Интеграция с сервисом Yandex Data Proc
    • Развертывание сервиса на основе Docker-образа
    • Веб-аналитика с расчетом воронок и когорт на данных Яндекс Метрики
  • Управление доступом
  • Правила тарификации
  • Публичные материалы
  • Релизы
  • Вопросы и ответы
  1. Концепции
  2. Вычисления и обучение моделей
  3. Вычисления на кластерах Apache Spark™

Вычисления на кластерах Apache Spark™ в DataSphere

Статья создана
Yandex Cloud
  • Варианты развертывания кластеров
    • Шаблоны Data Proc
    • Интеграция с сервисом Yandex Data Proc
  • Настройки проекта DataSphere для работы с кластерами Data Proc
  • Вычислительные сессии
    • Запуск python-кода в кластере
    • Работа с библиотекой Spark SQL

Сервис Yandex Data Proc позволяет разворачивать кластеры Apache Spark™. Вы можете использовать кластеры Data Proc, чтобы запускать распределенные обучения на кластерах. DataSphere поддерживает работу в сессиях, созданных с помощью Apache Livy.

Варианты развертывания кластеров

Вы можете развернуть кластер для вычислений в DataSphere двумя способами:

  • создать кластер в DataSphere, используя специальный ресурс — шаблон Data Proc;
  • самостоятельно создать кластер в сервисе Yandex Data Proc и интегрировать его в проект DataSphere.

Все кластеры Data Proc вне зависимости от варианта развертывания тарифицируются по правилам сервиса Yandex Data Proc. Все кластеры, доступные в проекте, можно посмотреть в разделе Ресурсы проекта ⟶ Data Proc на странице проекта.

Шаблоны Data Proc

В шаблоне Data Proc вы выбираете одну из предопределенных конфигураций кластера. На основе шаблона Data Proc, активированного в проекте, DataSphere развернет временный кластер, используя необходимые параметры проекта.

DataSphere следит за работой временных кластеров. Если в течение двух часов кластер не используется для вычислений, DataSphere его выключит. Вы можете повторно развернуть кластер в проекте, когда он вам понадобится. Вы также можете делиться шаблонами Data Proc с другими пользователями.

Подробнее о работе с шаблонами Data Proc.

Интеграция с сервисом Yandex Data Proc

Если вы уже работали с сервисом Yandex Data Proc, или стандартные конфигурации шаблонов вам не подходят, вы можете развернуть кластер и использовать его для вычислений в DataSphere.

Важно

Используя кластер, развернутый в сервисе Data Proc, вы управляете его жизненным циклом кластера самостоятельно. Даже если вычислений нет больше двух часов, кластер будет работать и тарифицироваться, пока вы его не выключите.

Для корректной интеграции с DataSphere развернутый кластер Data Proc должен иметь версию образа не ниже 1.3 с включенными сервисами LIVY, SPARK, YARN и HDFS.

Настройки проекта DataSphere для работы с кластерами Data Proc

Для работы с кластерами Data Proc укажите в настройках проекта следующие параметры:

  • Каталог для интеграции с другими сервисами Yandex Cloud. В нем будет развернут кластер Data Proc в рамках текущих квот облака, а стоимость использования кластера будет списана с платежного аккаунта облака.

  • Подсеть для связи DataSphere с кластером Data Proc. Кластеру Data Proc необходим доступ в интернет, поэтому в подсети должен быть настроен NAT-шлюз.

    Примечание

    Если вы указали подсеть в настройках проекта, время выделения вычислительных ресурсов может быть увеличено.

  • Сервисный аккаунт, от имени которого DataSphere будет создавать и управлять кластерами. Сервисному аккаунту понадобятся следующие роли:

    • dataproc.agent — для создания и использования кластеров Data Proc.
    • vpc.user — для работы с сетью кластера Data Proc.

Вычислительные сессии

В кластере Data Proc ваш код выполняется в сессиях. Сессия хранит промежуточное состояние до тех пор, пока вы не удалите ее или кластер. У каждого кластера есть сессия по умолчанию. Ее идентификатор равен идентификатору проекта.

Для управления сессиями используйте следующие команды:

  • %create_livy_session --cluster <имя кластера> --id <идентификатор сессии> — создание сессии;
  • %delete_livy_session --cluster <имя кластера> --id <идентификатор сессии> — удаление сессии.

Например, следующая команда создаст в кластере my-new-cluster сессию ses1, которая позволит каждому процессу использовать максимум 4 ядра CPU в кластере и 4 ГБ RAM (подробнее см. в документации Spark):

%create_livy_session --cluster my-new-cluster --id ses1 --conf spark.cores.max=4 --conf spark.executor.memory=4g

Полный список параметров livy-сессии см. в официальной документации.

Примечание

DataSphere использует системные переменные для работы с кластером Data Proc. Не переопределяйте значения следующих переменных:

  • sc
  • spark
  • HiveContext
  • StreamingContext
  • SqlContext

Запуск python-кода в кластере

Код запускается в ячейках с заголовком:

#!spark [--cluster <кластер>] [--session <сессия>] [--variables <переменная>]

Где:

  • <кластер> — кластер Data Proc, на котором будут производиться вычисления. Может быть:
    • Именем кластера, созданного через интерфейс ноутбука.
    • HTTP-ссылкой на внутренний IP-адрес хоста masternode, например http://10.0.0.8:8998/.
  • <сессия> — идентификатор вычислительной сессии. Если параметр пропущен, используется сессия кластера Data Proc по умолчанию.
  • <переменная> — переменная, импортированная в ячейку из ядра. Поддерживаемые типы: bool, int, float, str, pandas.DataFrame (преобразовывается в Spark DataFrame).

Пример использования вычислительных сессий с пользовательскими параметрами

Чтобы запустить вычисления в сессии с заданными настройками, сначала создайте сессию, а затем передайте код в ячейке с заголовком #!spark:

  1. Создайте сессию и определите ее параметры:

    %create_livy_session --cluster my-new-cluster --id ses1 --conf spark.cores.max=4 --conf spark.executor.memory=4g
    
  2. В следующей ячейке запустите вычисления:

    #!spark --cluster my-new-cluster --session ses1
    import random
    
    def inside(p):
    x, y = random.random(), random.random()
    return x*x + y*y < 1
    
    NUM_SAMPLES = 1_000_000
    
    count = sc.parallelize(range(0, NUM_SAMPLES)) \
       .filter(inside).count()
    print("Pi is roughly %f" % (4.0 * count / NUM_SAMPLES))
    
  3. Если сессия вам больше не нужна, удалите ее:

    %delete_livy_session --cluster my-new-cluster --id ses1
    

Работа с библиотекой Spark SQL

DataSphere может работать с библиотекой Spark SQL. Например, следующий запрос вернет все записи в таблице animals, созданной в кластере cluster test-dataproc-cluster:

#!spark --cluster test-dataproc-cluster
df = spark.sql("SELECT * FROM animals;")
df.show()

Подробнее о синтаксисе SQL-запросов и работе с библиотекой Spark SQL см. в официальной документации.

См. также

  • Шаблоны Data Proc.
  • Интеграция с сервисом Yandex Data Proc.

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

Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
В этой статье:
  • Варианты развертывания кластеров
  • Шаблоны Data Proc
  • Интеграция с сервисом Yandex Data Proc
  • Настройки проекта DataSphere для работы с кластерами Data Proc
  • Вычислительные сессии
  • Запуск python-кода в кластере
  • Работа с библиотекой Spark SQL