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

请解释 Presto 在面对海量数据时采用怎样的处理机制,并说明其分布式计算模型的具体运作流程是怎样的?

数据系统设计技术原理Presto

考察说明

考查对 Presto 分布式架构和并行查询执行原理的理解。

回答思路

  1. 【回答框架 1】Presto 采用主从架构,由 Coordinator 负责接收查询、解析 SQL、生成执行计划并调度任务,Worker 节点负责实际的数据读取和计算,二者通过 REST API 通信。
  2. 【回答框架 2】查询执行时,Coordinator 将执行计划拆分为多个 Stage,每个 Stage 进一步划分为多个 Task,Task 在 Worker 上并行运行,每个 Task 处理一个数据分片(Split),从而实现对大规模数据的分布式并行处理。
  3. 【回答框架 3】数据以页面(Page)为单位在节点间以流水线方式传输,下游 Task 可立即处理上游产生的数据,无需等待全部数据就绪,减少了延迟并提升了吞吐。
  4. 【回答框架 4】Presto 通过动态过滤、谓词下推和列式存储读取优化,减少实际处理的数据量,同时利用协处理器和本地计算能力提升效率。
  5. 【回答框架 5】其 MPP(大规模并行处理)模型支持在数千节点上扩展,适合交互式查询场景,但不适合跨节点复杂聚合的长时间批处理或超大 join 场景。
  6. 【关键点 1】Coordinator 负责查询解析和任务调度,Worker 负责并行执行和数据处理。
  7. 【关键点 2】查询拆分为 Stage 和 Task,每个 Task 处理独立数据分片,实现水平扩展。
  8. 【关键点 3】流水线式数据传输和并行执行降低了查询延迟。
  9. 【关键点 4】动态过滤和谓词下推等优化减少数据扫描量。
  10. 【易错点 1】Presto 并不保证数据写入或修改的一致性,定位是查询引擎而非事务数据库,不能与 OLTP 混用。
  11. 【易错点 2】对于数据倾斜或超大 group by 场景,需配置自定义内存或调整参数,否则可能导致内存溢出或查询失败。
  12. 【易错点 3】不要误以为 Presto 适合所有 ETL 批处理,其设计更偏向低延迟交互式分析,长时间复杂查询效率可能不如专用批处理引擎。