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

请阐述 Presto 的容错机制设计思路,并说明在集群中出现节点故障时如何进行处理与恢复。

数据风险判断技术原理Presto

考察说明

考察对 Presto 容错架构及故障处理流程的理解深度。

回答思路

  1. 【回答框架 1】Presto 容错核心是查询级调度与状态管理。Coordinator 负责拆解查询为多个 task,并将 task 调度到 worker 节点执行,同时跟踪所有 task 的状态,包括运行中、完成或失败。
  2. 【回答框架 2】当某个 worker 节点故障时,Coordinator 会检测到该节点上执行的 task 超时或无法通信,进而将这些 task 标记为失败。对于可重试的阶段,Coordinator 会在其他健康 worker 上重新调度这些 task,实现查询的自动恢复。
  3. 【回答框架 3】对于不可重试的 task,例如数据源读取阶段的某些操作,如果节点在中间结果物化前失败,可能导致整个查询失败。Presto 会返回错误给客户端,用户可以重试整个查询。
  4. 【回答框架 4】Presto 在容错中不依赖持久化中间结果,而是通过重算来完成恢复。因此,故障恢复时间与查询复杂度相关,且对资源占用有一定影响。在 Trino 后续版本中引入了基于交换文件的容错机制,可以持久化中间结果以加速恢复,但需明确这是演进方向。
  5. 【回答框架 5】整体设计上,Presto 追求高可用性而非强一致性。Coordinator 本身是单点,但可通过外部负载均衡实现多协调器;worker 节点故障则可被容忍,通过重调度完成查询。
  6. 【关键点 1】Coordinator 是查询调度和状态管理的核心,负责跟踪所有 task 状态。
  7. 【关键点 2】节点故障时,失败 task 会在健康节点上重新调度,实现自动恢复。
  8. 【关键点 3】对于不可重试的 task,查询失败,需客户端重试。
  9. 【关键点 4】Presto 经典版本不持久化中间结果,故障恢复依赖重算。
  10. 【关键点 5】Trino 新版本支持基于交换文件的容错,可持久化中间结果加速恢复。
  11. 【易错点 1】不能声称 Presto 容错保证查询必然成功,部分场景下查询会失败并需要重试。
  12. 【易错点 2】不要混淆 Coordinator 的容错与 worker 容错,Coordinator 单点需外部方案解决。
  13. 【易错点 3】注意区分 Presto 与 Trino 在容错机制上的演进差异,避免一概而论。