Apache Presto - 架构

Presto的架构几乎与经典的MPP(大规模并行处理)DBMS架构相似。 下图展示了Presto的架构。

Presto 架构

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

S.No 组件及描述
1.

Client

客户端(Presto CLI)将 SQL 语句提交给协调器以获取结果。

2.

Coordinator

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

3.

Connector

存储插件称为连接器。 Hive、HBase、MySQL、Cassandra 等充当连接器; 否则您也可以实现自定义的。 连接器提供用于查询的元数据和数据。 协调器使用连接器获取元数据以构建查询计划。

4.

Worker

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

Presto - 工作流程

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

调度程序通过执行管道连接。 调度程序将工作分配给最接近数据的节点并监视进度。 协调器将任务分配给多个工作节点,最后工作节点将结果返回给客户端。 客户端从输出进程中提取数据。 可扩展性是关键设计。 Hive、HBase、MySQL 等可插拔连接器为查询提供元数据和数据。 Presto 的设计采用了"简单的存储抽象",可以轻松地针对这些不同类型的数据源提供 SQL 查询功能。

执行模型

Presto 支持自定义查询和执行引擎,其中的运算符旨在支持 SQL 语义。 除了改进的调度之外,所有处理都在内存中,并通过网络在不同阶段之间进行管道传输。 这避免了不必要的 I/O 延迟开销。