概述

最近更新时间: 2026-03-13 09:03:00

Trino是一个开源的用户交互式分析查询的SQL查询引擎,用于针对各种大小的数据源进行交互式分析查询。其主要应用于海量结构化数据/半结构化数据分析、海量多维数据聚合/报表、ETL、Ad-Hoc查询等场景。
Trino允许查询的数据源包括Hadoop分布式文件系统(HDFS),Hive,HBase,Cassandra,关系数据库甚至专有数据存储。一个Trino查询可以组合不同数据源,执行跨数据源的数据分析。

基本特性

  • 高性能:Trino使用了许多优化技术,如基于成本的查询优化、管道执行、动态代码生成等,以提高查询性能。
  • 分布式架构:Trino采用了MPP架构,将查询任务分解为多个子任务,然后在多个工作节点上并行执行。这使得Trino能够在大规模数据集上进行高效查询。
  • 完整的 ANSI SQL 支持能力;
    Trino支持大部分ANSI SQL标准,包括复杂的查询、连接、聚合、窗口函数等。这使得用户可以使用熟悉的SQL语言进行数据分析。
  • 支持丰富的数据源:
    • ClickHouse
    • Cassandra
    • ElasticSearch
    • Hive
    • Hudi
    • Iceberg
    • Kafka
    • MySQL
    • Oracle
    • PostgreSQL
    • SQL Server
    • Redis
    • JMX
    • 本地文件
  • 支持高级数据结构:
    • 数组和Map数据
    • JSON数据
    • GIS数据
  • 功能扩展能力强,提供了多种扩展机制:
    • 扩展数据连接器
    • 自定义数据类型
    • 自定义SQL函数
  • 流水线:基于Pipeline处理模型数据在处理过程中实时返回给用户。
  • 监控接口完善:
    • 提供友好的Web UI,可视化的呈现查询任务执行过程。
    • 支持JMX协议。

系统架构

Trino分布式地运行在一个集群中,包含一个Coordinator和多个Worker进程,查询从客户端(例如CLI)提交到Coordinator,Coordinator进行SQL的解析和生成执行计划,然后分发到多个Worker进程上执行。
1.PNG

Trino是典型的M/S架构的系统,由一个Coordinator节点和多个Worker节点组成。 Coordinator负责如下工作:

  • 接收用户查询请求,解析并生成执行计划,下发任务到Worker节点执行。
  • 监控Worker节点运行状态,各个Worker节点与Coordinator节点保持心跳连接,汇报节点状态。
  • 维护MetaStore数据。
    Worker节点负责执行下发的任务,通过连接器读取外部存储系统的数据,进行处理,并将处理结果发送给Coordinator节点。

基本概念

数据模型

数据模型即数据的组织形式。Trino使用Catalog、Schema和Table三层结构来管理数据。

  • Catalog
    一个Catalog可以包含多个Schema,物理上指向一个外部数据源,可以通过Connector访问该数据源。一次查询可以访问一个或多个Catalog。
  • Schema
    相当于一个数据库实例,一个Schema包含多张数据表。
  • Table
    数据表,与一般意义上的数据库表相同。

常用 connector

Trino通过各种connector来接入多种外部数据源。Trino提供了一套标准的SPI接口,用户可以使用这套接口开发自己的Connector,以便访问自定义的数据源。
一个Catalog通常会绑定一种类型的connector,在Catalog的Properties文件中设置。Trino内置了多种Connector。

参考

https://trino.io/docs/current/