

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Trino 的历史和设计
<a name="emr-trino-intro-history"></a>

Trino 专为从许多不同来源查询大型数据集而设计。Trino 可以在传统的大数据使用案例中访问和查询 HDFS，但它也可以查询其他来源（例如关系数据库和 NoSQL 数据库）。Trino 最初是 Presto 查询引擎的一个分支，于 2019 年推出。此后，它独立于 Presto 代码库进行开发。

有关 Trino 查询引擎及其使用方式的更多信息，请访问 [Trino 网站](https://trino.io/)。要阅读 Trino 源文档，请参阅 [Trino Overview](https://trino.io/docs/current/overview.html)。

## 架构概念
<a name="emr-trino-intro-architecture"></a>

Trino 之所以能够快速高效地运行查询，是因为它可在集群中并行处理数据。它专为查询数据湖而设计，因为它专门用于查询大量数据，通常在涉及 Hadoop 和 HDFS 的使用案例中。但是，它也可以查询传统的关系数据库。有关更多信息，请参阅 *Trino 文档*中的 [Architecture](https://trino.io/docs/current/overview/concepts.html#architecture)。

### Trino 的组件
<a name="emr-trino-key-components"></a>

Trino 有几个关键架构组件，它们协同工作来使查询快速运行。了解这些组件有助于您优化集群来获得更好的性能：
+ **协调器**负责查询编排。它解析并优化传入的 SQL 查询，生成执行计划，将任务分配给 Worker 节点，并收集和汇总查询结果。此外，它还监控资源使用情况并跟踪 Worker 节点的状态。有关更多信息，请参阅 *Trino 文档*中的 [Coordinator](https://trino.io/docs/current/overview/concepts.html#coordinator)。
+ **Worker 节点**负责处理查询的数据。在协调器分配任务后，工作线程会检索数据，执行必要的操作（例如联接和聚合），并与其他工作线程交换中间数据。有关更多信息，请参阅 *Trino 文档*中的 [Worker](https://trino.io/docs/current/overview/concepts.html#worker)。
+ **连接器**是使 Trino 能够连接和查询各种数据来源的插件。每个连接器都知道如何访问和检索其来源（例如 Amazon S3、Apache Hive 或关系数据库）中的数据。这些连接器将源数据映射到 Trino 的架构结构。
+ **目录**是与特定连接器关联的架构和表的逻辑集合。协调器中定义的目录使 Trino 能够将不同的数据来源视为单个命名空间。这样，用户就可以在同一个查询中以统一的方式同时查询多个源（例如 Hive 和 MySQL）。
+ Trino CLI 等**客户端**通过 JDBC 和 ODBC 驱动程序连接到 Trino 协调器，以提交 SQL 查询。协调器负责管理查询生命周期，并将结果提供给客户进行进一步分析或报告。

### 运行查询
<a name="emr-trino-queries"></a>

要了解 Trino 如何接收 SQL 语句并将其作为查询运行，请参阅 *Trino 文档*中的 [Trino 概念](https://trino.io/docs/current/overview/concepts.html#query-execution-model)。