Вычисления на кластерах Apache Spark™ в DataSphere
Сервис 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
:
-
Создайте сессию и определите ее параметры:
%create_livy_session --cluster my-new-cluster --id ses1 --conf spark.cores.max=4 --conf spark.executor.memory=4g
-
В следующей ячейке запустите вычисления:
#!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))
-
Если сессия вам больше не нужна, удалите ее:
%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 см. в официальной документации.