Trino и Hive Metastore
| Trino | |
|---|---|
| Чарт | registry.trisigma.io/trisigma/charts/trisigma-trino:0.4.0 |
| Образ | registry.trisigma.io/trisigma/images/trisigma-trino:461.15.0-trisigma.2 |
| Hive Metastore | |
|---|---|
| Чарт | registry.trisigma.io/trisigma/charts/trisigma-hive-metastore:0.2.0 |
| Образ | registry.trisigma.io/trisigma/images/trisigma-hive-metastore:3.1.3-11-trisigma.1 |
Trino — распределённый SQL-движок для аналитики. Hive Metastore — каталог метаданных для Iceberg/Hive таблиц. Оба устанавливаются в один namespace.
Назначение
Trino — SQL-движок аналитики платформы. Считает результаты A/B-экспериментов из данных в Iceberg/S3 и ClickHouse, выполняет ETL-загрузки в ClickHouse.
Hive Metastore хранит метаданные Iceberg/Hive-таблиц (схемы, партиции, расположение в S3) и предоставляет их Trino через Thrift-протокол.
Деплой
Для установки каждого чарта необходимо заполнить файл с параметрами values-trisigma.yaml.
values.yaml содержит значения по умолчанию — не изменяйте его напрямую, а переопределяйте нужные параметры в отдельных файлах.
Hive Metastore
Параметры приложения · Hive Metastore
Хранятся в values-trisigma.yaml. Создайте файл из примера: cp values-trisigma.yaml.example values-trisigma.yaml.
Образ сервиса
| Параметр | Описание |
|---|---|
image.repository | Образ сервиса в Container registry |
image.tag | Тег образа сервиса в Container registry |
registry.trisigma.io напрямуюОбразы необходимо предварительно зеркалировать в ваш собственный Container Registry.
PostgreSQL
| Параметр | Описание |
|---|---|
postgresql.host | Хостнейм для подключения к PostgreSQL |
postgresql.port | Порт для подключения к PostgreSQL |
postgresql.database | Название БД, к которой подключается сервис |
postgresql.user | Учетная запись для подключения к PostgreSQL |
S3
| Параметр | Описание |
|---|---|
conf.hiveSite.fs.s3a.endpoint | Endpoint S3 для подключения |
conf.hiveSite.fs.s3a.region | Регион S3 |
CA-сертификаты
| Параметр | Описание |
|---|---|
extraCABundles[].caBundle | CA-сертификат в PEM-формате |
extraCABundles[].configMap | Ссылка на существующий ConfigMap с CA-сертификатом |
Секреты · Hive Metastore
Секреты в приложение можно передать двумя способами:
задать значения напрямую в secrets-values.yaml —
или указать имя существующего Kubernetes Secret в поле existingSecret в чарте
(например, созданного через Vault или External Secrets Operator).
Создайте файл из примера: cp secrets-values.yaml.example secrets-values.yaml.
| Секрет | Ключ | Описание |
|---|---|---|
PGPASSWORD | postgresql.password | Пароль для подключения к PostgreSQL |
S3_ANALYTIC_UPLOADS_ACCESS_KEY | s3.accessKey | S3 access key для доступа к бакету trisigma-analytic-uploads |
S3_ANALYTIC_UPLOADS_SECRET_ACCESS_KEY | s3.secretAccessKey | S3 secret key для доступа к бакету trisigma-analytic-uploads |
Использование существующего Secret (existingSecret)
Если вы не хотите передавать значения через secrets-values.yaml — укажите название вашего собственного Secret:
kubectl create namespace trisigma-trino
kubectl create secret generic trisigma-hive-metastore-secrets \
--from-literal=PGPASSWORD='...' \
--from-literal=S3_ANALYTIC_UPLOADS_ACCESS_KEY='...' \
--from-literal=S3_ANALYTIC_UPLOADS_SECRET_ACCESS_KEY='...' \
-n trisigma-trino
postgresql:
existingSecret: trisigma-hive-metastore-secrets
secretKeys:
passwordKey: PGPASSWORD
s3:
existingSecret: trisigma-hive-metastore-secrets
secretKeys:
accessKeyKey: S3_ANALYTIC_UPLOADS_ACCESS_KEY
secretAccessKeyKey: S3_ANALYTIC_UPLOADS_SECRET_ACCESS_KEY
Если имя ключа в Secret отличается — например, pg_password вместо PGPASSWORD —
укажите соответствие через secretKeys:
postgresql:
existingSecret: trisigma-hive-metastore-secrets
secretKeys:
passwordKey: pg_password
Использовать одновременно secrets-values.yaml и existingSecret в одном блоке не получится, способы несовместимы друг с другом.
Helm Install · Hive Metastore
cd trisigma-hive-metastore
helm upgrade --install trisigma-hive-metastore . \
--namespace trisigma-trino --create-namespace \
-f values-trisigma.yaml \
-f secrets-values.yaml # уберите, если все секреты через existingSecret
Trino
Параметры приложения · Trino
Хранятся в values-trisigma.yaml. Создайте файл из примера: cp values-trisigma.yaml.example values-trisigma.yaml.
Образ сервиса
| Параметр | Описание |
|---|---|
image.repository | Образ Trino в Container registry |
image.tag | Тег образа |
registry.trisigma.io напрямуюОбразы необходимо предварительно зеркалировать в ваш собственный Container Registry.
Каталоги
| Параметр | Описание |
|---|---|
s3BucketName | Имя бакета аналитических данных (trisigma-analytic-uploads) |
catalogs.hiveMetastore.host | Хостнейм для подключения к Hive Metastore |
catalogs.s3.endpoint | Endpoint S3 для подключения |
catalogs.s3.region | Регион S3 |
catalogs.clickhouse.host | Хостнейм для подключения к ClickHouse |
additionalCatalogs | Подключение дополнительных каталогов |
configMounts[] | Монтирование своего ConfigMap в поды Trino |
secretMounts[] | Монтирование своего Secret в поды Trino |
CA-сертификаты
| Параметр | Описание |
|---|---|
extraCABundles[].caBundle | CA-сертификат в PEM-формате |
extraCABundles[].configMap | Ссылка на существующий ConfigMap с CA-сертификатом |
Каталоги
При инициализации Trisigma создаёт необходимые для работы платформы каталоги и схемы в них
| Каталог | Коннектор |
|---|---|
trisigma | Iceberg |
trisigma_hive | Hive |
trisigma_clickhouse | ClickHouse |
Дополнительно регистрируются технические каталоги, необходимые для работы плагинов, поставляемых вместе с образом:
metrics и generic_scalar_functions — они не содержат данных.
Подключение собственных источников данных
При необходимости вы можете добавить подключение к собственным источникам данных с помощью параметра чарта additionalCatalogs.
Доступные коннекторы перечислены в документации Trino 461.
Подключенный каталог будет доступен на чтение, запись и выполнение произвольного SQL в источнике — под учётной записью из настроек подключения. При необходимости ограничьте её права на стороне вашего хранилища.
Примеры подключения:
- PostgreSQL
- ClickHouse
- Iceberg и Hive
additionalCatalogs:
internal_dwh_postgres: |-
connector.name=postgresql
connection-url=jdbc:postgresql://pg.dwh.internal:5432/analytics
connection-user=${ENV:INTERNAL_DWH_POSTGRES_USER}
connection-password=${ENV:INTERNAL_DWH_POSTGRES_PASSWORD}
case-insensitive-name-matching=true
envFrom:
- secretRef:
name: internal-dwh-postgres-secret
# Если ключ в Secret отличается:
# env:
# - name: INTERNAL_DWH_POSTGRES_PASSWORD
# valueFrom:
# secretKeyRef:
# name: internal-dwh-postgres-secret
# key: password
additionalCatalogs:
internal_dwh_clickhouse: |-
connector.name=clickhouse
connection-url=jdbc:clickhouse://ch.dwh.internal:8443/analytics?socket_timeout=300000&data_transfer_timeout=300000&ssl=true
connection-user=${ENV:INTERNAL_DWH_CLICKHOUSE_USER}
connection-password=${ENV:INTERNAL_DWH_CLICKHOUSE_PASSWORD}
clickhouse.map-string-as-varchar=true
envFrom:
- secretRef:
name: internal-dwh-clickhouse-secret
# Если ключ в Secret отличается:
# env:
# - name: INTERNAL_DWH_CLICKHOUSE_PASSWORD
# valueFrom:
# secretKeyRef:
# name: internal-dwh-clickhouse-secret
# key: password
additionalCatalogs:
internal_dwh_iceberg: |-
connector.name=iceberg
hive.metastore.uri=thrift://hms.dwh.internal:9083
fs.native-s3.enabled=false
fs.hadoop.enabled=true
hive.s3.endpoint=https://s3.dwh.internal
hive.s3.region=ru-central1
hive.s3.path-style-access=true
hive.s3.aws-access-key=${ENV:INTERNAL_DWH_S3_ACCESS_KEY}
hive.s3.aws-secret-key=${ENV:INTERNAL_DWH_S3_SECRET_KEY}
iceberg.file-format=ORC
iceberg.compression-codec=ZSTD
iceberg.hive-catalog-name=internal_dwh_hive
internal_dwh_hive: |-
connector.name=hive
hive.metastore.uri=thrift://hms.dwh.internal:9083
fs.native-s3.enabled=false
fs.hadoop.enabled=true
hive.s3.endpoint=https://s3.dwh.internal
hive.s3.region=ru-central1
hive.s3.path-style-access=true
hive.s3.aws-access-key=${ENV:INTERNAL_DWH_S3_ACCESS_KEY}
hive.s3.aws-secret-key=${ENV:INTERNAL_DWH_S3_SECRET_KEY}
hive.storage-format=ORC
hive.compression-codec=ZSTD
hive.orc.use-column-names=true
hive.iceberg-catalog-name=internal_dwh_iceberg
envFrom:
- secretRef:
name: internal-dwh-s3-secret
# Если ключ в Secret отличается:
# env:
# - name: INTERNAL_DWH_S3_SECRET_KEY
# valueFrom:
# secretKeyRef:
# name: internal-dwh-s3-secret
# key: secret_key
Секреты · Trino
Секреты в приложение можно передать двумя способами:
задать значения напрямую в secrets-values.yaml —
или указать имя существующего Kubernetes Secret в поле existingSecret в чарте
(например, созданного через Vault или External Secrets Operator).
Создайте файл из примера: cp secrets-values.yaml.example secrets-values.yaml.
| Секрет | Ключ | Описание |
|---|---|---|
SHARED_SECRET | sharedSecret.value | Внутренняя аутентификация coordinator-worker (генерируемый токен) |
S3_ANALYTIC_UPLOADS_ACCESS_KEY | s3.accessKey | S3 access key для доступа к бакету trisigma-analytic-uploads |
S3_ANALYTIC_UPLOADS_SECRET_ACCESS_KEY | s3.secretAccessKey | S3 secret key для доступа к бакету trisigma-analytic-uploads |
TRISIGMA_CH_USER | clickhouse.user | Логин ClickHouse |
TRISIGMA_CH_PASSWORD | clickhouse.password | Пароль ClickHouse |
Использование существующего Secret · Trino (existingSecret)
Если вы не хотите передавать значения через secrets-values.yaml — укажите название вашего собственного Secret для каждого домена:
kubectl create namespace trisigma-trino
kubectl create secret generic trisigma-trino-secrets \
--from-literal=SHARED_SECRET='...' \
--from-literal=S3_ANALYTIC_UPLOADS_ACCESS_KEY='...' \
--from-literal=S3_ANALYTIC_UPLOADS_SECRET_ACCESS_KEY='...' \
--from-literal=TRISIGMA_CH_USER='...' \
--from-literal=TRISIGMA_CH_PASSWORD='...' \
-n trisigma-trino
sharedSecret:
existingSecret: trisigma-trino-secrets
secretKeys:
valueKey: SHARED_SECRET
s3:
existingSecret: trisigma-trino-secrets
secretKeys:
accessKeyKey: S3_ANALYTIC_UPLOADS_ACCESS_KEY
secretAccessKeyKey: S3_ANALYTIC_UPLOADS_SECRET_ACCESS_KEY
clickhouse:
existingSecret: trisigma-trino-secrets
secretKeys:
userKey: TRISIGMA_CH_USER
passwordKey: TRISIGMA_CH_PASSWORD
Если имя ключа в Secret отличается — например, ch_password вместо TRISIGMA_CH_PASSWORD —
укажите соответствие через secretKeys:
clickhouse:
existingSecret: trisigma-trino-secrets
secretKeys:
passwordKey: ch_password
Использовать одновременно secrets-values.yaml и existingSecret в одном блоке не получится, способы несовместимы друг с другом.
Helm Install · Trino
cd trisigma-trino
helm upgrade --install trisigma-trino . \
--namespace trisigma-trino --create-namespace \
-f values-trisigma.yaml \
-f secrets-values.yaml # уберите, если все секреты через existingSecret