Создание кластера Trino
Примечание
Сервис находится на стадии Preview.
Каждый кластер Managed Service for Trino состоит из набора компонентов Trino: координатора и воркеров, которые могут быть представлены в нескольких экземплярах.
Роли для создания кластера
Для создания кластера Managed Service for Trino вашему аккаунту в Yandex Cloud нужны роли:
- managed-trino.admin — чтобы создать кластер;
- vpc.user — чтобы работать с сетью кластера;
- iam.serviceAccounts.user — чтобы привязать сервисный аккаунт к кластеру.
Сервисному аккаунту кластера должны быть назначены роли managed-trino.integrationProvider
и storage.editor
. Это даст кластеру нужные права для работы с пользовательскими ресурсами. Подробнее см. в разделе Имперсонация.
О назначении ролей читайте в документации Yandex Identity and Access Management.
Создать кластер
-
В консоли управления
выберите каталог, в котором нужно создать кластер Managed Service for Trino. -
Выберите сервис Managed Service for Trino.
-
Нажмите кнопку Создать кластер.
-
В блоке Базовые параметры:
-
Задайте имя кластера. Имя должно быть уникальным в рамках каталога.
-
(Опционально) Введите описание кластера.
-
(Опционально) Создайте метки:
- Нажмите кнопку Добавить метку.
- Введите метку в формате
ключ: значение
. - Нажмите Enter.
-
Выберите существующий сервисный аккаунт или создайте новый.
Сервисному аккаунту должны быть назначены роли
managed-trino.integrationProvider
иstorage.editor
.
-
-
В блоке Сетевые настройки выберите сеть, подсеть и группу безопасности для кластера.
-
Задайте конфигурацию координатора и воркеров.
-
В блоке Каталоги добавьте необходимые каталоги. Вы можете сделать это как при создании кластера, так и позже.
-
Задайте имя каталога. Имя должно быть уникальным в рамках облака.
-
Выберите Тип коннектора.
-
В блоке Настройки каталога задайте параметры в зависимости от выбранного типа:
-
Для коннекторов Hive, Iceberg и Delta Lake:
- URI для подключения к кластеру Metastore в формате
thrift://<IP-адрес>:<порт>
. - Файловое хранилище — выберите тип файлового хранилища: Yandex Object Storage или Внешнее хранилище. Для внешнего хранилища задайте следующие настройки:
- Идентификатор AWS-совместимого статического ключа доступа.
- Секретный ключ AWS-совместимого статического ключа доступа.
- Эндпоинт файлового хранилища, например
storage.yandexcloud.net
. - Регион файлового хранилища, например
ru-central1
.
- URI для подключения к кластеру Metastore в формате
-
Для коннекторов PostgreSQL и ClickHouse®:
- URL для подключения к кластеру в формате
jdbc:<СУБД>://<адрес_хоста>:<порт>/<имя_базы_данных>
, гдеСУБД
—postgresql
илиclickhouse
. - Имя пользователя для подключения к кластеру.
- Пароль пользователя.
- URL для подключения к кластеру в формате
-
Коннекторы TPC-H
и TPC-DS предоставляют доступ к тестовым данным и не нуждаются в настройке.
-
-
(Опционально) Задайте дополнительные настройки каталога в формате
ключ:значение
.
-
-
В блоке Дополнительные настройки:
-
(Опционально) Включите защиту от удаления кластера.
-
(Опционально) Настройте логирование:
- Включите настройку Запись логов.
- Выберите место записи логов:
- Каталог — выберите каталог из списка.
- Группа — выберите лог-группу из списка или создайте новую.
- Выберите Минимальный уровень логирования из списка.
-
-
Нажмите кнопку Создать.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Создайте файл
body.json
и добавьте в него следующее содержимое:Примечание
В примере приведены не все доступные параметры. Список всех параметров см. в документации по API.
{ "folderId": "<идентификатор_каталога>", "name": "<имя_кластера>", "description": "<описание_кластера>", "labels": { <список_меток> }, "trino": { "coordinatorConfig": { "resources": { "resourcePresetId": "<идентификатор_ресурсов>" } }, "workerConfig": { "resources": { "resourcePresetId": "<идентификатор_ресурсов>" }, "scalePolicy": { "autoScale": { "minCount": "<минимальное_количество_экземпляров>", "maxCount": "<максимальное_количество_экземпляров>" } } } }, "network": { "subnetIds": [ <список_идентификаторов_подсетей> ], "securityGroupIds": [ <список_идентификаторов_групп_безопасности> ] }, "deletionProtection": "<защита_от_удаления>", "serviceAccountId": "<идентификатор_сервисного_аккаунта>", "logging": { "enabled": "<использование_логирования>", "folderId": "<идентификатор_каталога>", "minLevel": "<уровень_логирования>" } }
Где:
-
folderId
— идентификатор каталога. Его можно запросить со списком каталогов в облаке. -
name
— имя кластера. -
description
— описание кластера. -
labels
— список меток. Метки задаются в формате"<ключ>": "<значение>"
. -
trino
— конфигурация компонентов кластера Trino.-
coordinatorConfig
— конфигурация координатора.-
resources.resourcePresetId
— идентификатор вычислительных ресурсов координатора. Возможные значения:c4-m16
— 4 vCPU, 16 ГБ RAM.c8-m32
— 8 vCPU, 32 ГБ RAM.
-
-
workerConfig
— конфигурация воркера.-
resources.resourcePresetId
— идентификатор вычислительных ресурсов воркера. Возможные значения:c4-m16
— 4 vCPU, 16 ГБ RAM.c8-m32
— 8 vCPU, 32 ГБ RAM.
-
scalePolicy
— политика масштабирования воркеров:-
fixedScale
— фиксированная политика масштабирования.count
— количество воркеров.
-
autoScale
— автоматическая политика масштабирования.minCount
— минимальное количество воркеров.maxCount
— максимальное количество воркеров.
Укажите один из двух параметров:
fixedScale
либоautoScale
. -
-
-
-
network
— сетевые настройки:subnetIds
— список идентификаторов подсетей.securityGroupIds
— список идентификаторов групп безопасности.
-
deletionProtection
— позволяет включить защиту кластера от непреднамеренного удаления. Возможные значения:true
илиfalse
.Включенная защита от удаления не помешает подключиться к кластеру вручную и удалить его.
-
serviceAccountId
— идентификатор сервисного аккаунта. -
logging
— параметры логирования:enabled
— позволяет включить логирование. Логи, сгенерированные компонентами Trino, будут отправляться в Yandex Cloud Logging. Возможные значения:true
илиfalse
.minLevel
— минимальный уровень логирования. Возможные значения:TRACE
,DEBUG
,INFO
,WARN
,ERROR
иFATAL
.folderId
— идентификатор каталога. Логи будут записываться в лог-группу по умолчанию для этого каталога.logGroupId
— идентификатор пользовательской лог-группы. Логи будут записываться в нее.
Укажите один из двух параметров:
folderId
либоlogGroupId
.
-
-
Воспользуйтесь методом Cluster.create и выполните запрос, например, с помощью cURL
:curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --url 'https://trino.api.cloud.yandex.net/managed-trino/v1/clusters' --data '@body.json'
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
Далее предполагается, что содержимое репозитория находится в директории
~/cloudapi/
. -
Создайте файл
body.json
и добавьте в него следующее содержимое:Примечание
В примере приведены не все доступные параметры. Список всех параметров см. в документации по API.
{ "folder_id": "<идентификатор_каталога>", "name": "<имя_кластера>", "description": "<описание_кластера>", "labels": { <список_меток> }, "trino": { "coordinator_config": { "resources": { "resource_preset_id": "<идентификатор_ресурсов>" } }, "worker_config": { "resources": { "resource_preset_id": "<идентификатор_ресурсов>" }, "scale_policy": { "auto_scale": { "min_count": "<минимальное_количество_экземпляров>", "max_count": "<максимальное_количество_экземпляров>" } } } }, "network": { "subnet_ids": [ <список_идентификаторов_подсетей> ], "security_group_ids": [ <список_идентификаторов_групп_безопасности> ] }, "deletion_protection": "<защита_от_удаления>", "service_account_id": "<идентификатор_сервисного_аккаунта>", "logging": { "enabled": "<использование_логирования>", "folder_id": "<идентификатор_каталога>", "min_level": "<уровень_логирования>" } }
Где:
-
folder_id
— идентификатор каталога. Его можно запросить со списком каталогов в облаке. -
name
— имя кластера. -
description
— описание кластера. -
labels
— список меток. Метки задаются в формате"<ключ>": "<значение>"
. -
trino
— конфигурация компонентов кластера Trino.-
coordinator_config
— конфигурация координатора.-
resources.resource_preset_id
— идентификатор вычислительных ресурсов координатора. Возможные значения:c4-m16
— 4 vCPU, 16 ГБ RAM.c8-m32
— 8 vCPU, 32 ГБ RAM.
-
-
worker_config
— конфигурация воркера.-
resources.resource_preset_id
— идентификатор вычислительных ресурсов воркера. Возможные значения:c4-m16
— 4 vCPU, 16 ГБ RAM.c8-m32
— 8 vCPU, 32 ГБ RAM.
-
scale_policy
— политика масштабирования воркеров:-
fixed_scale
— фиксированная политика масштабирования.count
— количество воркеров.
-
auto_scale
— автоматическая политика масштабирования.min_count
— минимальное количество воркеров.max_count
— максимальное количество воркеров.
Укажите один из двух параметров:
fixed_scale
либоauto_scale
. -
-
-
-
network
— сетевые настройки:subnet_ids
— список идентификаторов подсетей.security_group_ids
— список идентификаторов групп безопасности.
-
deletion_protection
— позволяет включить защиту кластера от непреднамеренного удаления. Возможные значения:true
илиfalse
.Включенная защита от удаления не помешает подключиться к кластеру вручную и удалить его.
-
service_account_id
— идентификатор сервисного аккаунта. -
logging
— параметры логирования:enabled
— позволяет включить логирование. Логи, сгенерированные компонентами Trino, будут отправляться в Yandex Cloud Logging. Возможные значения:true
илиfalse
.min_level
— минимальный уровень логирования. Возможные значения:TRACE
,DEBUG
,INFO
,WARN
,ERROR
иFATAL
.folder_id
— идентификатор каталога. Логи будут записываться в лог-группу по умолчанию для этого каталога.log_group_id
— идентификатор пользовательской лог-группы. Логи будут записываться в нее.
Укажите один из двух параметров:
folder_id
либоlog_group_id
.
-
-
Воспользуйтесь вызовом ClusterService/Create и выполните запрос, например, с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/trino/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d @ \ trino.api.cloud.yandex.net:443 \ yandex.cloud.trino.v1.ClusterService.Create \ < body.json
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.