数据岗位面试题更新 2026-08-05

在 Presto 分布式查询引擎中,整体架构由哪几个核心组件组成?请分别说明每个组件在整个查询流程中的主要职责。

数据系统设计技术原理Presto

考察说明

考查对 Presto 架构整体组成及各组件职责的理解。

回答思路

  1. 【回答框架 1】Presto 是分布式 SQL 查询引擎,架构遵循典型的 Master-Slave 模式,核心组件包括 Coordinator、Worker、Discovery Service 和 Connector。Coordinator 作为主节点,负责接收客户端请求、解析 SQL、生成执行计划、调度任务并汇总结果;Worker 作为工作节点,负责执行 Coordinator 分配的任务,处理数据并返回结果;Discovery Service 用于服务发现,让 Coordinator 和 Worker 相互注册和定位;Connector 是连接外部数据源的适配器,让 Presto 能查询 Hive、MyS
  2. 【回答框架 2】Coordinator 的主要职责涵盖三个阶段:解析 SQL 生成抽象语法树,经过语义分析和优化生成逻辑计划,再通过成本模型生成物理执行计划;随后将执行计划切分为多个任务并分发到合适的 Worker 上,同时协调整个查询的生命周期,包括监控任务进度、处理错误和重试。Worker 节点负责具体的数据处理,每个 Worker 可以同时执行多个任务,任务间通过交换算子进行数据交换,最终将结果集返回给 Coordinator 或客户端。
  3. 【回答框架 3】Discovery Service 在 Presto 中通常内嵌于 Coordinator 进程,提供节点注册与发现机制,新加入的 Worker 会向它注册,Coordinator 也通过它获取活跃节点列表,实现集群的动态扩展和容错。Connector 是 SPI 接口,每种数据源对应一个 Connector 实现,它提供元数据读取和数据的并行读取能力,从而屏蔽底层存储差异,使 Presto 能以统一的 SQL 接口访问多种数据源。
  4. 【回答框架 4】整体查询流程为:客户端发送查询给 Coordinator,Coordinator 从 Discovery Service 获取 Worker 列表,基于数据分布和负载生成查询计划,并将任务分配给多个 Worker 并行执行,Worker 通过 Connector 读取数据,经过多阶段处理(如聚合、连接等)后将结果汇聚回 Coordinator,最终返回给客户端。这种架构使得 Presto 具备高并发、低延迟的交互式查询能力,但也决定了它不适合替代数据仓库进行复杂 ETL。
  5. 【回答框架 5】总结而言,Presto 的核心设计哲学是『一个引擎,多个数据源』,架构中各组件职责清晰:Coordinator 管调度、Worker 管执行、Discovery 管注册、Connector 管接入。理解这套架构有助于定位查询性能瓶颈,例如大查询压垮 Coordinator 或 Worker 数据倾斜,也有助于根据场景调整部署和配置,比如增加 Worker 提升并发能力。
  6. 【关键点 1】Presto 采用主从架构,Coordinator 负责 SQL 解析、计划生成与任务调度,Worker 负责数据读取与计算。
  7. 【关键点 2】Discovery Service 实现节点注册与发现,支持集群动态扩展,通常由 Coordinator 内嵌提供服务。
  8. 【关键点 3】Connector 是插件式数据源适配器,通过 SPI 统一外部存储,实现跨数据源查询。
  9. 【关键点 4】查询时 Coordinator 将计划切分为多阶段任务,分发给 Worker 并行执行,结果逐级汇聚。
  10. 【关键点 5】任务执行包含元数据获取、数据读取、运算与交换,且通过多阶段流水线提升效率。
  11. 【易错点 1】不要将 Presto 架构误认为中心化存储,它只是查询引擎,数据仍存储于各自的数据源中。
  12. 【易错点 2】避免将 Coordinator 视为仅做简单路由,它实际承担 SQL 解析、优化、调度等核心工作。
  13. 【易错点 3】不可忽视 Discovery Service 的作用,错失注册与发现机制会导致对节点扩展和容错的理解偏差。