Изменение кластера Apache Spark™
После создания кластера вы можете изменить его основные и дополнительные настройки.
Чтобы изменить настройки кластера:
-
Перейдите на страницу каталога
и выберите сервис Managed Service for Apache Spark. -
Выберите кластер и нажмите кнопку Редактировать на панели сверху.
-
В блоке Базовые параметры:
- Измените имя и описание кластера.
- Удалите или добавьте новые метки.
- Выберите сервисный аккаунт или создайте новый с ролью
managed-spark.integrationProvider. Это даст кластеру нужные права для работы с другими ресурсами.
-
В блоке Сетевые настройки выберите группу безопасности для сетевого трафика кластера.
-
В блоках Конфигурация драйвера и Конфигурация исполнителя укажите количество экземпляров и конфигурацию вычислительных ресурсов. Количество экземпляров может быть фиксированным или автомасштабируемым.
-
В блоке Дополнительные настройки:
-
Удалите или добавьте названия pip- и deb-пакетов.
Формат названия пакета и выбор версии определены командой установки:
pip install— для pip-пакетов,apt install— для deb-пакетов. -
В настройке Окно обслуживания измените время технического обслуживания кластера:
- Чтобы разрешить проведение технического обслуживания в любое время, выберите пункт произвольное (по умолчанию).
- Чтобы указать предпочтительное время начала обслуживания, выберите пункт по расписанию и укажите нужные день недели и час дня по UTC. Например, можно выбрать время, когда кластер наименее загружен.
Операции по техническому обслуживанию проводятся для включенных и выключенных кластеров. Они могут включать в себя: обновление СУБД, применение патчей и так далее.
-
Выберите кластер Apache Hive™ Metastore для подключения в качестве хранилища метаданных.
-
Установите или снимите защиту от удаления кластера.
-
Включите или выключите History Server. Опция позволяет использовать сервис для мониторинга приложений Spark History Server
. -
Включите или выключите Запись логов. Опция включает логирование Spark-приложений в кластере:
- Выберите место записи логов:
- Каталог — выберите каталог из списка.
- Группа — выберите лог-группу из списка или создайте новую.
- Выберите Минимальный уровень логирования из списка.
- Выберите место записи логов:
-
-
Нажмите кнопку Сохранить.
Чтобы изменить настройки кластера:
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
Как создать такой файл, см. в разделе Создание кластера.
-
Чтобы изменить настройки кластера, измените значения нужных полей в конфигурационном файле.
Внимание
Не изменяйте имя кластера с помощью Terraform. Это приведет к удалению существующего кластера и созданию нового.
Пример структуры конфигурационного файла:
resource "yandex_spark_cluster" "my_spark_cluster" { description = "<описание_кластера>" name = "my-spark-cluster" folder_id = "<идентификатор_каталога>" service_account_id = "<идентификатор_сервисного_аккаунта>" deletion_protection = <защитить_кластер_от_удаления> labels = { <список_меток> } network = { subnet_ids = ["<список_идентификаторов_подсетей>"] security_group_ids = ["<список_идентификаторов_групп_безопасности>"] } config = { resource_pools = { driver = { resource_preset_id = "<класс_хоста>" size = <фиксированное_количество_экземпляров> } executor = { resource_preset_id = "<класс_хоста>" size = <фиксированное_количество_экземпляров> } } history_server = { enabled = <использование_Apache_Spark_History_Server> } metastore = { cluster_id = "<идентификатор_кластера_Apache_Hive™_Metastore>" } dependencies = { deb_packages = ["<список_deb-пакетов>"] pip_packages = ["<список_pip-пакетов>"] } } maintenance_window = { type = "<тип_технического_обслуживания>" day = "<день_недели>" hour = "<час_дня>" } logging = { enabled = <включить_логирование> folder_id = "<идентификатор_каталога>" } }Где:
-
description— описание кластера. -
service_account_id— идентификатор сервисного аккаунта. -
deletion_protection— защита кластера от непреднамеренного удаления:trueилиfalse. -
labels— список меток. Метки задаются в формате<ключ> = "<значение>". -
security_group_ids— список идентификаторов групп безопасности. -
driver— конфигурация хостов для запуска драйверов Apache Spark™. В этом блоке укажите:- Класс хостов в параметре
resource_preset_id. - Количество экземпляров. Укажите фиксированное количество в параметре
sizeили минимальное и максимальное количество для автомасштабирования в параметрахmin_sizeиmax_size.
- Класс хостов в параметре
-
executor— конфигурация хостов для запуска исполнителей Apache Spark™. В этом блоке укажите:- Класс хостов в параметре
resource_preset_id. - Количество экземпляров. Укажите фиксированное количество в параметре
sizeили минимальное и максимальное количество для автомасштабирования в параметрахmin_sizeиmax_size.
- Класс хостов в параметре
-
maintenance_window– параметры технического обслуживания (в т. ч. для выключенных кластеров). В этом блоке укажите:- Тип технического обслуживания в параметре
type. Принимает значения:ANYTIME— в любое время.WEEKLY— по расписанию.
- День недели для типа обслуживания
WEEKLYв параметреday:MON,TUE,WED,THU,FRI,SATилиSUN. - Час дня по UTC для типа обслуживания
WEEKLYв параметреhour: от1до24.
- Тип технического обслуживания в параметре
-
history_server— подключение сервиса Apache Spark™ History Server. Для использования сервиса укажитеtrueв параметреenabled. -
metastore— подключение хранилища метаданных Apache Hive™ Metastore. Укажите идентификатор кластера Apache Hive™ Metastore в параметреcluster_id. -
dependencies— дополнительные deb- и pip-пакеты для запуска заданий Apache Spark™. В этом блоке укажите:deb_packages— названия deb-пакетов. Их формат определяет команда установкиapt install.pip_packages— названия pip-пакетов. Их формат определяет команда установкиpip install.
-
logging— параметры логирования. Сгенерированные компонентами Apache Spark™ логи будут отправляться в Yandex Cloud Logging. Для включения логирования:-
Установите значение
enabled = true. -
Задайте одно из двух мест хранения логов:
folder_id— идентификатор каталога. Логи будут записываться в лог-группу по умолчанию для этого каталога.log_group_id— идентификатор пользовательской лог-группы. Логи будут записываться в нее.
-
-
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform.
Чтобы изменить настройки кластера:
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Создайте файл
body.jsonи добавьте в него следующее содержимое:{ "cluster_id": "<идентификатор_кластера>", "update_mask": "<список_изменяемых_параметров>", "name": "<имя_кластера>", "description": "<описание_кластера>", "labels": { <список_меток> }, "config_spec": { "resource_pools": { "driver": { "resource_preset_id": "<идентификатор_ресурсов_драйвера>", "scale_policy": { "fixed_scale": { "size": "<количество_экземпляров_драйвера>" } } }, "executor": { "resource_preset_id": "<идентификатор_ресурсов_исполнителя>", "scale_policy": { "auto_scale": { "min_size": "<минимальное_количество_экземпляров_исполнителя>", "max_size": "<максимальное_количество_экземпляров_исполнителя>" } } } }, "history_server": { "enabled": <использование_Apache_Spark_History_Server> }, "dependencies": { "pip_packages": [ <список_pip-пакетов> ], "deb_packages": [ <список_deb-пакетов> ] }, "metastore": { "cluster_id": "<идентификатор_кластера_Apache_Hive™_Metastore>" } }, "network_spec": { "security_group_ids": [ <список_идентификаторов_групп_безопасности> ] }, "deletion_protection": <защита_от_удаления>, "service_account_id": "<идентификатор_сервисного_аккаунта>", "logging": { "enabled": <использование_логирования>, "log_group_id": "<идентификатор_лог_группы>", "folder_id": "<идентификатор_каталога>" } }Где:
-
cluster_id— идентификатор кластера. Его можно запросить со списком кластеров в каталоге. -
update_mask— перечень изменяемых параметров в виде массива строкpaths[].Формат перечисления настроек
"update_mask": { "paths": [ "<настройка_1>", "<настройка_2>", ... "<настройка_N>" ] }Важно
Все параметры изменяемого кластера, которые не были явно переданы в запросе, будут переопределены на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
update_mask. -
name— имя кластера. -
description— описание кластера. -
labels— список меток. Метки задаются в формате"<ключ>": "<значение>". -
config_spec— конфигурация кластера:-
resource_pools— конфигурация пулов ресурсов:-
driver— конфигурация хостов для запуска драйверов Apache Spark™.-
resource_preset_id— класс хостов драйвера. -
scale_policy— политика масштабирования групп хостов для драйвера:-
fixed_scale— фиксированная политика масштабирования.size— количество хостов для драйвера.
-
auto_scale— автоматическая политика масштабирования.min_size— минимальное количество хостов для драйвера.max_size— максимальное количество хостов для драйвера.
Укажите один из двух параметров:
fixed_scaleлибоauto_scale. -
-
-
executor— конфигурация хостов для запуска исполнителей Apache Spark™.-
resource_preset_id— класс хостов исполнителя. -
scale_policy— политика масштабирования групп хостов для исполнителя:-
fixed_scale— фиксированная политика масштабирования.size— количество хостов для исполнителя.
-
auto_scale— автоматическая политика масштабирования.min_size— минимальное количество хостов для исполнителя.max_size— максимальное количество хостов для исполнителя.
Укажите один из двух параметров:
fixed_scaleлибоauto_scale. -
-
-
history_server— параметры сервера истории.enabled— флаг включения сервера истории. Позволяет использовать сервис для мониторинга приложений Spark History Server.
-
dependencies— списки пакетов, которые позволяют установить в кластер дополнительные библиотеки и приложения.pip_packages— список pip-пакетов.deb_packages— список deb-пакетов.
При необходимости задайте ограничения на версии устанавливаемых пакетов, например:
"dependencies": { "pip_packages": [ "pandas==2.0.2", "scikit-learn>=1.0.0", "clickhouse-driver~=0.2.0" ] }Формат названия пакета и выбор версии определены командой установки:
pip install— для pip-пакетов,apt install— для deb-пакетов. -
metastore— параметры хранилища метаданных кластера.cluster_id— идентификатор кластера Apache Hive™ Metastore.
-
-
network— сетевые настройки:security_group_ids— список идентификаторов групп безопасности.
-
deletion_protection— позволяет включить защиту кластера от непреднамеренного удаления. Возможные значения:trueилиfalse.Включенная защита от удаления не помешает подключиться к кластеру вручную и удалить его.
-
service_account_id— идентификатор сервисного аккаунта для доступа к сервисам Yandex Cloud. Сервисному аккаунту должна быть назначена рольmanaged-spark.integrationProvider. -
logging— параметры логирования:enabled— позволяет включить логирование. Возможные значения:trueилиfalse. Логи, сгенерированные компонентами Apache Spark™, будут отправляться в Yandex Cloud Logging. Возможные значения:trueилиfalse.folder_id— идентификатор каталога. Логи будут записываться в лог-группу по умолчанию для этого каталога.log_group_id— идентификатор пользовательской лог-группы. Логи будут записываться в нее.
Укажите один из двух параметров:
folder_idлибоlog_group_id.
-
-
-
Воспользуйтесь вызовом ClusterService.Update и выполните запрос, например с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/spark/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d @ \ spark.api.cloud.yandex.net:443 \ yandex.cloud.spark.v1.ClusterService.Update \ < body.json -
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.