Обновление версии Apache Spark™
Вы можете изменить версию Apache Spark™ на любую из поддерживаемых в Managed Service for Apache Spark™.
Обновления и исправления внутри одной версии устанавливаются во время технического обслуживания автоматически.
Получить список доступных версий
Примечание
Если для работы с версиями вы используете окружения, то информация о версии указана в названии базового окружения.
- В консоли управления
выберите каталог. - Перейдите
в сервис Managed Service for Apache Spark. - Выберите кластер и нажмите на панели сверху
Редактировать. Откроется страница редактирования кластера.
Список доступных версий можно посмотреть в поле Версия.
Перед обновлением версии
Убедитесь, что обновление не нарушит работу ваших приложений:
- Посмотрите в истории изменений
Apache Spark™, как обновления могут повлиять на работу ваших приложений. - Попробуйте обновить версию Apache Spark™ на тестовом кластере.
Обновить версию
Способ обновления версии Apache Spark™ зависит от того, как в кластере заданы зависимости:
-
Если в поле Способ настройки ПО выбрано значение Пакеты вручную, измените версию в настройках кластера.
Важно
Данный способ устарел и скоро будет недоступен. Рекомендуется использовать окружения для работы с различными версиями Apache Spark™.
-
Если в поле Способ настройки ПО выбрано значение Окружение, выберите базовое окружение (версия Apache Spark™ и Python) или подключите к кластеру пользовательское окружение с нужной версией. Версия Apache Spark™ фиксирована внутри окружения и отдельно в настройках кластера не задается.
Кластер использует пакеты, добавленные вручную
- В консоли управления
выберите каталог. - Перейдите
в сервис Managed Service for Apache Spark. - Выберите кластер и нажмите на панели сверху
Редактировать. - В блоке Дополнительные настройки перейдите к полю Способ настройки ПО → Пакеты вручную выберите версию Apache Spark™.
- Нажмите Сохранить изменения.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.
Чтобы изменить версию Apache Spark™:
-
Посмотрите описание команды CLI для изменения кластера:
yc managed-spark cluster update --help -
Измените версию, выполнив команду:
yc managed-spark cluster update <имя_или_идентификатор_кластера> \ --spark-version <версия_Apache_Spark>Имя и идентификатор кластера можно получить со списком кластеров в каталоге.
-
Откройте актуальный конфигурационный файл Apache Spark™ с планом инфраструктуры.
Инструкция по созданию файла описана в разделе Создание кластера.
-
Измените в описании кластера значение параметра
spark_version:resource "yandex_spark_cluster" "<имя_кластера>" { ... config = { ... spark_version = "<версия_Apache_Spark>" ... } ... } -
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
-
Получите 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": { "paths": [ "config_spec.spark_version" ] }, "config_spec": { "spark_version": "<версия_Apache_Spark>" } }Где:
-
cluster_id— идентификатор кластера.Идентификатор кластера можно получить со списком кластеров в каталоге.
-
update_mask— перечень изменяемых параметров в виде массива строкpaths[].Формат перечисления настроек
"update_mask": { "paths": [ "<настройка_1>", "<настройка_2>", ... "<настройка_N>" ] }Важно
При изменении кластера все параметры изменяемого объекта, которые не были явно переданы в запросе, будут переопределены на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
update_mask. -
spark_version— версия Apache Spark™.
-
-
Воспользуйтесь вызовом 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 -
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Кластер использует окружение
Кластер может использовать базовое или пользовательское окружение.
Базовое окружение содержит только версию Apache Spark™ и версию Python. Его можно выбрать во время создания или изменения кластера.
Пользовательское окружение содержит базовое окружение и список необходимых pip- и deb-пакетов, которые позволяют установить в кластер дополнительные библиотеки и приложения. Список пакетов пользователь задает самостоятельно. Список пакетов и версию Apache Spark™ нельзя изменить в уже созданном пользовательском окружении. Чтобы обновить версию Apache Spark™, подготовьте пользовательское окружение с нужной версией и подключите его к кластеру.
-
Подготовьте окружение с нужной версией Apache Spark™ одним из способов:
-
В консоли управления
выберите каталог с нужным кластером. -
Перейдите
в сервис Managed Service for Apache Spark. -
Выберите кластер и нажмите на панели сверху Редактировать.
-
В блоке Дополнительные настройки в поле Способ настройки ПО → Окружение выберите подготовленное окружение.
-
Нажмите Сохранить изменения.
-
Подготовьте окружение с нужной версией Apache Spark™.
-
Получите 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": { "paths": [ "config_spec.environment_id" ] }, "config_spec": { "environment_id": "<идентификатор_окружения>" } }Где:
cluster_id— идентификатор кластера. Его можно получить со списком кластеров в каталоге;environment_id— идентификатор окружения с нужной версией Apache Spark™. Идентификатор пользовательского окружения можно получить с помощью вызова EnvironmentService/List, базового окружения — с помощью вызова EnvironmentService/ListBase.
-
Воспользуйтесь вызовом 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 -
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.