分布式 SQL 查询引擎之Trino

Trino(PrestoSQL)详细介绍

Trino 是目前最流行的 分布式 SQL 查询引擎(Distributed SQL Query Engine) 之一,定位是:

通过 SQL 联邦查询(Federated Query)访问各种数据源,实现跨数据湖、数据库、消息系统的高速交互式分析。

它最初来自 Facebook 的 Presto 项目,后来社区分裂,原 PrestoSQL 改名为 Trino

如果你熟悉:

  • Hive

  • Spark SQL

  • Doris

  • StarRocks

  • ClickHouse

  • Iceberg

  • Lakehouse

可以这样理解:

Trino 是 Lakehouse 架构中的统一 SQL 查询层,相当于数据世界的"SQL访问网关"。


1. Trino 的定位

传统大数据架构:

复制代码
业务库
 |
ETL
 |
Hive数仓
 |
Spark计算
 |
BI

问题:

数据分散:

复制代码
MySQL
Oracle
Kafka
Hive
S3
MongoDB
ES

每个系统:

  • SQL不同

  • 数据孤岛

  • 需要搬迁

Trino:

复制代码
                  SQL

                   |
              Trino Query Engine

     -------------------------------
     |       |       |       |
   MySQL   Hive   Kafka   Iceberg

一个SQL查询多个系统。

例如:

复制代码
select
    a.customer_id,
    a.order_amount,
    b.user_level
from mysql.orders a
join hive.users b
on a.customer_id=b.id;

订单来自MySQL。

用户来自Hive。


2. Trino的发展历史

Presto

2012年:

Facebook开发。

目标:

解决:

Hive查询太慢

Hive:

复制代码
SQL
 |
MapReduce
 |
HDFS

分钟级。

Presto:

复制代码
SQL
 |
内存计算
 |
MPP执行

秒级。


分裂

2018:

社区分裂:

PrestoDB

Facebook维护。

后来:

Meta Platforms继续维护。

PrestoSQL

社区版本。

2020:

改名:

Trino

目前:

Trino发展更活跃。


3. Trino整体架构

复制代码
             Client

               |
              JDBC

               |
        +--------------+
        | Coordinator |
        +--------------+

               |
       -----------------
       |       |       |
    Worker Worker Worker

       |
  --------------------
  |        |          |
Hive     Iceberg    MySQL
Connector Connector Connector

核心:

Coordinator

负责:

  • SQL解析

  • 查询计划

  • 调度任务

类似:

Spark Driver。


Worker

负责:

  • 数据读取

  • Join

  • Aggregation

  • Shuffle

类似:

Spark Executor。


4. Trino执行流程

SQL:

复制代码
select
country,
count(*)
from orders
group by country;

流程:

Step1 SQL解析

复制代码
SQL
 |
Parser
 |
AST

Step2 查询优化

生成:

Logical Plan

例如:

复制代码
Scan

 |

Filter

 |

Group By

Step3 生成执行计划

Physical Plan:

复制代码
Coordinator

    |
 Scan Task

    |
Aggregation

    |
Result

Step4 Worker执行

Worker:

复制代码
读取数据

↓

计算

↓

Shuffle

↓

聚合

5. Trino为什么快?

5.1 MPP架构

Massively Parallel Processing

例如:

100GB数据:

单机:

复制代码
CPU
 |
100GB

MPP:

复制代码
          Trino

Worker1  25GB
Worker2  25GB
Worker3  25GB
Worker4  25GB

并行计算

5.2 内存计算

Hive:

复制代码
磁盘
 |
Map
 |
Reduce

Trino:

复制代码
数据
 |
Memory
 |
Pipeline

减少磁盘IO。


5.3 Pipeline执行

传统:

复制代码
Scan完成

↓

Join

↓

Group

Trino:

复制代码
Scan
 |
Join
 |
Aggregation

流水线执行

6. Trino Connector机制(核心)

Trino最大的价值:

Connector。

架构:

复制代码
             Trino

                |

          Connector API


 ---------------------------------

 Hive Connector

 Iceberg Connector

 MySQL Connector

 Kafka Connector

 Elasticsearch Connector

 MongoDB Connector

Hive Connector

访问:

  • Hive Metastore

  • HDFS

  • S3

例如:

复制代码
select *
from hive.sales.orders;

Iceberg Connector(非常重要)

现在Lakehouse主流。

复制代码
Trino

 |

Iceberg Connector

 |

Iceberg Table

 |

S3/HDFS

SQL:

复制代码
select *
from iceberg.db.customer;

支持:

  • Time Travel

  • Schema Evolution

  • Partition Evolution


JDBC Connector

访问:

  • MySQL

  • PostgreSQL

  • Oracle

例如:

复制代码
select *
from mysql.crm.customer;

Kafka Connector

Kafka:

复制代码
topic

↓

Trino

↓

SQL

例如:

复制代码
select *
from kafka.orders;

实时分析。


7. Trino vs Hive

这是大数据面试高频。

Hive Trino
定位 离线数仓 交互分析
执行 MapReduce/Tez/Spark MPP
速度 分钟
资源 磁盘 内存
Join
BI 一般 优秀

关系:

不是替代。

常见:

复制代码
Hive负责:

数据生产

ETL

        ↓

Trino负责:

查询分析

BI

探索

8. Trino vs Spark SQL

Trino Spark SQL
定位 SQL查询 通用计算
延迟 秒级 秒~分钟
ETL 一般
机器学习
流处理 Structured Streaming
交互分析 优秀 一般

简单:

Spark:

数据工程平台

Trino:

SQL分析平台


9. Trino vs Doris / StarRocks

你之前做过 Doris,这个比较重要。

Trino Doris
定位 查询联邦 分析数据库
数据来源 多个系统 自己存储
存储 外部 内部
实时写入
Join
BI

架构:

Trino

复制代码
          SQL

           |

        Trino

     /    |     \

 Hive  MySQL  Iceberg

Doris

复制代码
          SQL

           |

        Doris

           |

     自己存储数据

10. Trino + Lakehouse架构

现代数据平台:

复制代码
                BI

                 |
               Trino

                 |

        ----------------

        Iceberg

        Delta Lake

        Hudi

        ----------------

                 |

              S3/HDFS

Trino成为:

Lakehouse SQL层。


11. Trino + Iceberg 是目前热点组合

为什么?

以前:

复制代码
Hive Table

+
Hive Metastore

+
HDFS

问题:

  • schema变化困难

  • update困难

  • delete困难

Iceberg:

复制代码
Data File

+
Metadata

+
Snapshot

Trino:

直接查询。

例如:

复制代码
select *
from iceberg.ai_training.dataset;

12. Trino在AI数据平台中的价值

结合你关注的:

  • AI数据闭环

  • RAG

  • Feature Store

  • 数据治理

非常适合。

场景1:训练数据分析

数据:

复制代码
S3

|

Parquet

|

Iceberg

|

Trino

分析:

复制代码
select
label,
count(*)
from dataset
group by label;

场景2:RAG知识库质量分析

例如:

文档:

复制代码
document_id
chunk
embedding
metadata

Trino:

分析:

  • chunk数量

  • 长度分布

  • 来源质量


场景3:数据治理

跨源:

复制代码
MySQL

+

Hive

+

Kafka

+

Iceberg

统一SQL。


13. Trino集群部署

典型:

复制代码
          Load Balancer

                 |

            Coordinator

                 |

 --------------------------------

 Worker1

 Worker2

 Worker3

 Worker4

配置:

Coordinator:

复制代码
query.max-memory=50GB

Worker:

复制代码
-Xmx64G

14. Trino缺点

1. 不适合复杂ETL

例如:

10小时任务:

数据清洗:

推荐:

Spark/Flink。


2. 内存敏感

大Join:

容易:

复制代码
OutOfMemory

需要:

  • Join优化

  • 分区设计

  • Broadcast策略


3. 不负责数据存储

它只是:

计算层。


15. Trino未来趋势

目前数据架构趋势:

复制代码
传统:

Hadoop
 |
Hive


未来:

Object Storage

(S3)

 |

Iceberg

 |

Trino

 |

BI / AI

Trino正在成为:

Lakehouse SQL标准查询引擎。

相关推荐
没刮胡子1 小时前
AI完全离线的ASR语音识别+TTS语音合成+大模型对话
人工智能·ai·语音识别·tts·asr
曦尧2 小时前
BitChat:蓝牙 Mesh + Nostr 双轨加密通讯工具深度笔记
ai·自动化
神奇霸王龙11 小时前
国产音乐视频 Prompt 三段式屠夫榜:5 个国产视频模型实测对比
人工智能·ai·prompt·音视频·agent·ai编程·agi
JaydenAI12 小时前
[A2A协议与实现-06]如何将一个MAF Agent发布为A2A服务[JSON-RPC]
ai·agent·sse·a2a·maf
神奇霸王龙12 小时前
AI视频Prompt结构化实战指南:可灵/万相/豆包
人工智能·ai·prompt·aigc·音视频·ai编程
艾斯特_15 小时前
工作流与多Agent协作:LangGraph、MCP和A2A的应用分层
人工智能·python·ai
腾视科技AIoT15 小时前
私有云时代来临:AI NAS如何重塑你的数字生活?
人工智能·ai·生活·nas·企业存储·ainas·家庭存储
清泓y16 小时前
RAG 技术
算法·ai
曦尧16 小时前
Instatic:一体化自托管可视化 CMS,押注「干净静态页」对抗 SaaS 订阅锁定
ai·自动化