Подключение к кластеру Trino
В этом разделе представлены настройки для подключения к кластеру Managed Service for Trino с помощью инструментов командной строки, из графических IDE и WebSQL. О подключении из кода вашего приложения см. Примеры строк подключения.
Подключаться к кластеру Managed Service for Trino, у которого включен приватный доступ, можно только из той сети, в которой расположен кластер.
Примечание
Если для подключения требуется указывать порт, используйте порт 443.
Настройка групп безопасности
Группы безопасности не ограничивают входящий трафик кластера Managed Service for Trino и не влияют на доступность веб-интерфейса Trino. Настраивать правила для входящего трафика не нужно.
Вы можете использовать группы безопасности, чтобы задавать правила для исходящего трафика, например при настройке нового каталога.
Чтобы подключаться к кластеру Trino с виртуальной машины в Yandex Cloud, настройте группу безопасности ВМ, с которой будет происходить подключение. Пример правил для ВМ:
-
Для входящего трафика:
- Диапазон портов —
22. - Протокол —
TCP. - Источник —
CIDR. - CIDR блоки —
0.0.0.0/0.
Это правило позволяет подключаться к ВМ по протоколу SSH.
- Диапазон портов —
-
Для исходящего трафика:
- Протокол —
Любой(Any). - Диапазон портов —
0-65535. - Назначение —
CIDR. - CIDR блоки —
0.0.0.0/0.
Это правило разрешает любой исходящий трафик, что позволяет не только подключаться к кластеру, но и устанавливать на ВМ необходимые для этого утилиты.
- Протокол —
Группы безопасности для работы с Yandex MPP Analytics for PostgreSQL
Для подключения к кластеру Yandex MPP Analytics for PostgreSQL коннектор использует протокол GPFDIST:
- Координаторы и воркеры Trino выполняют запросы к мастеру Yandex MPP Analytics for PostgreSQL через TCP-порт 6432.
- Сегменты Yandex MPP Analytics for PostgreSQL передают данные на воркеры Trino через TCP-порт GPFDIST из диапазона 30078–30085.
Данные, передающиеся по протоколу GPFDIST между кластерами Yandex MPP Analytics for PostgreSQL и Trino, не шифруются. Чтобы обеспечить безопасное подключение, настройте группы безопасности на стороне Yandex MPP Analytics for PostgreSQL и (опционально) на стороне Managed Service for Trino.
Настройка на стороне Yandex MPP Analytics for PostgreSQL
-
Правило для трафика внутри кластера Yandex MPP Analytics for PostgreSQL:
- Диапазон портов —
0-65535. - Протокол —
Любой(Any). - Источник —
Группа безопасности. - Группа безопасности —
Текущая(Self).
- Диапазон портов —
-
Правило для подключения из кластера Trino:
- Диапазон портов —
6432. - Протокол —
TCP. - Источник —
Группа безопасности. - Группа безопасности — укажите группу безопасности кластера Trino.
- Диапазон портов —
-
Правило для трафика внутри кластера Yandex MPP Analytics for PostgreSQL:
- Диапазон портов —
0-65535. - Протокол —
Любой(Any). - Источник —
Группа безопасности. - Группа безопасности —
Текущая(Self).
- Диапазон портов —
-
Правило для подключения к кластеру Trino:
- Диапазон портов —
30078-30085. - Протокол —
TCP. - Источник —
Группа безопасности. - Группа безопасности — укажите группу безопасности кластера Trino.
- Диапазон портов —
Настройка на стороне Managed Service for Trino
Правила групп безопасности на стороне Trino настраиваются зеркально правилам на стороне Yandex MPP Analytics for PostgreSQL. Настройка правил для кластера Trino является опциональной, но позволяет дополнительно обезопасить кластер.
Правило для приема данных от сегментов Yandex MPP Analytics for PostgreSQL:
- Диапазон портов —
30078-30085. - Протокол —
TCP. - Источник —
Группа безопасности. - Группа безопасности — укажите группу безопасности кластера Yandex MPP Analytics for PostgreSQL.
Правило для подключения к мастеру Yandex MPP Analytics for PostgreSQL:
- Диапазон портов —
6432. - Протокол —
TCP. - Источник —
Группа безопасности. - Группа безопасности — укажите группу безопасности кластера Yandex MPP Analytics for PostgreSQL.
Инструменты командной строки
Trino CLI
Если у вас еще нет интерфейса командной строки Trino, установите его по инструкции на официальном сайте Trino
Чтобы подключиться к кластеру Managed Service for Trino:
-
Создайте IAM-токен и поместите его в переменную окружения
TRINO_PASSWORD:export TRINO_PASSWORD=$(yc iam create-token)IAM-токен, хранящийся в переменной
TRINO_PASSWORD, служит паролем для подключения к кластеру Managed Service for Trino. Чтобы использовать его, укажите при подключении флаг--password. -
Подключитесь к кластеру Managed Service for Trino:
./trino c-<идентификатор_кластера>.trino.yandexcloud.net --user iam --passwordИдентификатор кластера можно запросить со списком кластеров в каталоге.
Подключение из графических IDE
Перед подключением:
-
Создайте IAM-токен:
yc iam create-token -
Сохраните полученный токен. Он будет использоваться в качестве пароля при подключении.
- Создайте источник данных:
- Выберите в меню File → New → Data Source → Trino.
- Введите имя источника данных.
- Укажите параметры подключения на вкладке General:
-
Host —
c-<идентификатор_кластера>.trino.yandexcloud.net.Если вы подключаетесь к кластеру Managed Service for Trino через сервисное подключение, то в качестве адреса хоста укажите
c-<идентификатор_кластера>.trino.pe.yandexcloud.net. -
Port —
443. -
User —
iam. -
Password — созданный ранее IAM-токен.
-
- Нажмите ссылку Test Connection для проверки подключения. При успешном подключении будет выведен статус подключения, информация о СУБД и драйвере.
- Нажмите кнопку OK, чтобы сохранить источник данных.
- Создайте новое соединение с БД:
- Выберите в меню База данных пункт Новое соединение.
- Выберите из списка Trino.
- Нажмите кнопку Далее.
- Укажите параметры подключения на вкладке Главное:
-
Хост —
c-<идентификатор_кластера>.trino.yandexcloud.net.Если вы подключаетесь к кластеру Managed Service for Trino через сервисное подключение, то в качестве адреса хоста укажите
c-<идентификатор_кластера>.trino.pe.yandexcloud.net. -
Порт —
443. -
В блоке Аутентификация укажите:
- Имя пользователя —
iam; - Пароль пользователя — созданный ранее IAM-токен.
- Имя пользователя —
-
- Нажмите кнопку Тест соединения ... для проверки подключения. При успешном подключении будет выведен статус подключения, информация о СУБД и драйвере.
- Нажмите кнопку Готово, чтобы сохранить настройки соединения с БД.
WebSQL
-
Перейдите на страницу каталога
. -
Перейдите в сервис Managed Service for Trino.
-
Откройте ваш кластер Managed Service for Trino.
-
Перейдите в раздел WebSQL.
-
Нажмите кнопку Перейти в WebSQL.
-
В открывшемся редакторе SQL-запросов выполните запрос:
SELECT version() AS version;В ответе на запрос будет информация о версии Trino.
Примеры строк подключения
Python
Перед подключением:
-
Установите зависимости:
pip3 install trino -
Создайте IAM-токен и поместите его в переменную окружения
TOKEN:export TOKEN=$(yc iam create-token)
-
Пример кода:
connect.pyimport os from contextlib import closing from trino.dbapi import connect from trino.auth import BasicAuthentication TIMEOUT = 10 COORDINATOR_URL = 'c-<идентификатор_кластера>.trino.yandexcloud.net' IAM_TOKEN = os.environ['TOKEN'] def get_version(): auth = BasicAuthentication(username='iam', password=IAM_TOKEN) with closing(connect(host=COORDINATOR_URL, port=443, auth=auth, request_timeout=TIMEOUT)) as conn: with closing(conn.cursor()) as cur: cur.execute('SELECT version() as version') rows = cur.fetchall() print(rows[0]) if __name__ == "__main__": get_version()Идентификатор кластера можно запросить со списком кластеров в каталоге.
Если вы подключаетесь к кластеру Managed Service for Trino через сервисное подключение, то в качестве адреса хоста укажите
c-<идентификатор_кластера>.trino.pe.yandexcloud.net. -
Подключение:
python3 connect.py
Java
Перед подключением:
-
Установите зависимости:
sudo apt update && sudo apt install --yes openjdk-21-jre maven -
Создайте директорию для проекта Maven:
cd ~/ && mkdir -p project/src/main/java/com/example && cd project/ -
Создайте конфигурационный файл для Maven:
pom.xml
<?xml version="1.0" encoding="utf-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>app</artifactId> <version>0.1.0</version> <packaging>jar</packaging> <properties> <maven.compiler.source>21</maven.compiler.source> <maven.compiler.target>21</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>io.trino</groupId> <artifactId>trino-jdbc</artifactId> <version>469</version> </dependency> </dependencies> <build> <finalName>${project.artifactId}-${project.version}</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>3.7.1</version> <executions> <execution> <goals> <goal>single</goal> </goals> <phase>package</phase> <configuration> <descriptorRefs> <descriptorRef> jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <mainClass>com.example.App</mainClass> </manifest> </archive> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.4.2</version> <configuration> <archive> <manifest> <mainClass>com.example.App</mainClass> </manifest> </archive> </configuration> </plugin> </plugins> </build> </project> -
Создайте IAM-токен и поместите его в переменную окружения
TOKEN:export TOKEN=$(yc iam create-token)
-
Пример кода:
src/main/java/com/example/App.javapackage com.example; import java.sql.DriverManager; import java.util.Properties; public class App { private static final String COORDINATOR_URL = "c-<идентификатор_кластера>.trino.yandexcloud.net"; public static void main(String[] args) { String url = String.format("jdbc:trino://%s", COORDINATOR_URL); String iamToken = System.getenv("TOKEN"); Properties properties = new Properties(); properties.setProperty("user", "iam"); properties.setProperty("password", iamToken); properties.setProperty("SSL", "true"); try (var connection = DriverManager.getConnection(url, properties)) { var rs = connection.createStatement().executeQuery("SELECT version() as VERSION"); if (rs.next()) { System.out.println(rs.getString(1)); } } catch (Exception e) { e.printStackTrace(); } } }Идентификатор кластера можно запросить со списком кластеров в каталоге.
Если вы подключаетесь к кластеру Managed Service for Trino через сервисное подключение, то в качестве адреса хоста укажите
c-<идентификатор_кластера>.trino.pe.yandexcloud.net. -
Сборка и подключение:
mvn clean package && \ java -jar target/app-0.1.0-jar-with-dependencies.jar
Node.js
Перед подключением:
-
Установите зависимости:
sudo apt update && sudo apt install --yes nodejs npm && \ npm install trino-client -
Создайте IAM-токен и поместите его в переменную окружения
TOKEN:export TOKEN=$(yc iam create-token)
app.mjs
"use strict";
import {BasicAuth, Trino} from 'trino-client';
const COORDINATOR_URL = 'c-<идентификатор_кластера>.trino.yandexcloud.net'
let TOKEN = process.env.TOKEN
async function get_version() {
const trino = Trino.create({server: COORDINATOR_URL,auth: new BasicAuth('iam', TOKEN)});
const query = await trino.query('SELECT version() as VERSION');
const queryResult = await query.next()
console.log(queryResult.value.data[0][0])
}
get_version();
Идентификатор кластера можно запросить со списком кластеров в каталоге.
Если вы подключаетесь к кластеру Managed Service for Trino через сервисное подключение, то в качестве адреса хоста укажите c-<идентификатор_кластера>.trino.pe.yandexcloud.net.
Подключение:
node app.mjs