Apache Presto 简明教程

Apache Presto - Architecture

Presto 的架构几乎类似于经典 MPP(海量并行处理)DBMS 架构。下图说明了 Presto 的架构。

presto architecture

上述图表包含不同的组件。下表详细描述了每个组件。

S.No

Component & Description

1.

Client 客户端(Presto CLI)向协调器提交 SQL 语句以获得结果。

2.

Coordinator 协调器是一个主守护进程。协调器最初解析 SQL 查询,然后分析并计划查询执行。调度程序执行管道执行,将工作分配给最接近的节点并监控进度。

3.

Connector 存储插件被称为连接器。Hive、HBase、MySQL、Cassandra 及其他许多都充当连接器;否则你也可以实现一个自定义连接器。连接器为查询提供元数据和数据。协调器使用连接器获取元数据来构建查询计划。

4.

Worker 协调器将任务分配给工作节点。这些工作节点从连接器获取实际数据。最后,工作节点将结果传递给客户端。

Presto − Workflow

Presto 是一个分布式系统,在集群的节点上运行。Presto 的分布式查询引擎经过优化,适用于交互分析,并支持标准 ANSI SQL,包括复杂查询、聚合、连接和窗口函数。Presto 架构简单而可扩展。Presto 客户端(CLI)向一个主守护进程协调器提交 SQL 语句。

调度器通过执行管道连接。调度器会将工作分配给最靠近数据且可以监控进度的节点。协调器将任务分配给多个工作节点,最终工作节点将结果返回给客户端。客户端从输出进程获取数据。可扩展性是一项主要的设计要点。像 Hive、HBase、MySQL 等可插入连接器可为查询提供元数据和数据。Presto 采用“简单存储抽象”进行设计,使针对不同类型数据源提供 SQL 查询功能变得容易。

Execution Model

Presto 利用专为支持 SQL 语义而设计的操作员,支持自定义查询和执行引擎。除了改进调度外,所有处理工作都在内存中执行,并在不同阶段通过网络进行管道传输。这避免了不必要的 I/O 延迟开销。