Saltar para o conteúdo principal
Versão Next 🚧

Configuração do Trino

O que é o Trino?

O Trino (antigo PrestoSQL) é o motor de consulta SQL distribuída do TDP.

Ele permite fazer queries em múltiplas fontes de dados com um único comando SQL — você pode unir uma tabela do ClickHouse com uma tabela do Iceberg no Ozone em um único SELECT, sem mover dados.

O Trino não armazena dados próprios: ele é um query engine federado.

Todo dado lido ou escrito pelo Trino vem de fontes externas chamadas catálogos.

Cada catálogo aponta para uma fonte de dados (Hive/Iceberg no Ozone, ClickHouse, PostgreSQL, Kafka) e usa um connector específico.

Para saber mais

Consulte Trino — Conceitos para uma visão completa da ferramenta, sua arquitetura e funcionamento.

Arquitetura coordinator-worker

O Trino funciona com um modelo coordinator + workers:

ComponenteFunção
CoordinatorRecebe a query SQL, cria o plano de execução e distribui o trabalho
WorkersExecutam as partes do plano em paralelo, processando dados das fontes

Você não escala o coordinator — ele é sempre um.

Você escala os workers (trino.server.workers) para aumentar paralelismo.

Em produção, configure autoscaling (trino.server.autoscaling) para que os workers escalem conforme a carga.

Esta página descreve a configuração do Trino no TDP Kubernetes. O chart tdp-trino implanta o coordenador, workers e catálogos configuráveis para consultas SQL distribuídas.

Visão geral

PropriedadeValor
Charttdp-trino
Versão do Trino478
Versão do Chart3.0.0
Registry (exemplos)oci://registry.tecnisys.com.br/tdp/charts/tdp-trino

Instalação

Exemplo
helm install <release> oci://registry.tecnisys.com.br/tdp/charts/tdp-trino \
-n <namespace> --create-namespace

Nomes de recursos seguem o release Helm; é possível ter várias instâncias no cluster com releases diferentes.

Parâmetros principais (chart)

ParâmetroDescriçãoPadrão típico
trino.enabledHabilitar Trinotrue
trino.image.tagTag da imagemVer helm show values
trino.server.workersRéplicas de worker2
trino.server.node.environmentRótulo de ambiente TrinoPlaceholder no values
trino.service.portPorta do serviço8080
trino.ingress.enabledIngressfalse
trino.server.autoscaling.enabledHPA nos workersfalse
trino.server.keda.enabledKEDA nos workersfalse
trino.jmx.enabledJMXfalse
trino.serviceMonitor.enabledServiceMonitorfalse
trino.accessControlControle de acesso (opcional){}
trino.catalogsDefinições de catálogoEx.: tpch / tpcds / memory (ver values.yaml)
trinoCerts.pvc.enabledPVC para certificadosfalse
trinoCerts.secret.enabledSecret com certificadosfalse
trinoCerts.copyJob.enabledJob pré-install para copiar certificados ao PVCfalse

Catálogos (connectors)

Os catálogos ficam em trino.catalogs. Para habilitar um connector, adicione uma entrada no formato de propriedades, seguindo os exemplos do values.yaml do chart.

Exemplo genérico (PostgreSQL — ajuste host, banco e credenciais):

trino:
catalogs:
postgresql: |
connector.name=postgresql
connection-url=jdbc:postgresql://<db-host>:5432/<database>
connection-user=<user>
connection-password=<password>

Exemplo de catálogo em memória:

trino:
catalogs:
memory: |
connector.name=memory

Aplique com helm upgrade usando seu arquivo de values ou -f.

TLS e certificados (trinoCerts)

Quando for necessário HTTPS ou keystore (por exemplo com LDAP ativado), o chart pode:

  • provisionar um PVC (trinoCerts.pvc)
  • referenciar um Secret com arquivos (trinoCerts.secret)
  • executar um Job antes do install/upgrade para copiar do Secret para o PVC (trinoCerts.copyJob)

Detalhes exatos de montagem e nomes de chaves estão no values.yaml do chart.

LDAP e HTTPS

Com ldap.enabled: false (padrão): HTTP na porta 8080, sem autenticação obrigatória.

Com ldap.enabled: true e values de LDAP: HTTPS na porta 8443, autenticação PASSWORD, volumes de certificado e secrets associados.

Passos e exemplos de values estão em Segurança — Trino. Ingress com LDAP costuma exigir TLS passthrough — veja Ingress — Trino.

Conectar ao Trino

O nome DNS do serviço Kubernetes costuma ser o nome do release ou o definido pelo chart; confira com:

kubectl -n <namespace> get svc

Mesmo namespace

  • Host: <nome-do-serviço-trino>
  • Porta HTTP: 8080 (sem LDAP)
  • Porta HTTPS: 8443 (com LDAP, conforme configuração)

Outro namespace

  • Host: <nome-do-serviço-trino>.<namespace>.svc.cluster.local

Exemplos

Python (trino client):

import trino

conn = trino.dbapi.connect(
host="<nome-do-serviço-trino>",
port=8080,
user="<user>",
catalog="tpch",
schema="tiny",
http_scheme="http",
)

CLI:

trino --server http://<nome-do-serviço-trino>:8080 \
--user <user> \
--catalog tpch \
--schema tiny

Acesso local (port-forward)

kubectl -n <namespace> port-forward service/<release> 8080:8080

(Com LDAP/HTTPS, use a porta 8443 no mapeamento se for o caso.)

Escalonamento

O Trino usa um coordenador e vários workers. O número de workers é controlado por trino.server.workers ou recursos de autoscaling no values.yaml, conforme suportado pelo chart — não escale o coordenador para mais de uma réplica.

Resolução de Problemas

kubectl -n <namespace> get pods
kubectl -n <namespace> get events --sort-by=.lastTimestamp

Desinstalação

helm uninstall <release> -n <namespace>

Para a lista completa de parâmetros, consulte o values.yaml do chart.