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

请阐述 MapReduce 框架在面对任务失败时的处理流程,并列举其主要的容错机制有哪些?

数据风险判断技术原理

考察说明

考察对 MapReduce 容错机制的理解,包括任务失败检测、恢复流程及各类容错策略。

回答思路

  1. 【回答框架 1】MapReduce 任务失败主要分三类:任务失败(Task Failure)、应用主节点失败(App Master Failure)和节点失败(Node Failure)。任务失败通常由代码异常、运行时错误或资源问题导致,框架会尝试重新执行该任务。
  2. 【回答框架 2】任务失败处理流程:任务尝试(Task Attempt)失败后,Application Master 会记录失败原因,并根据最大重试次数决定是否重试。若重试次数超过阈值,整个作业失败。重试时,已完成的 map 任务会重新计算吗?通常 map 任务输出存储在本地磁盘,若节点故障则丢失,需要重跑。
  3. 【回答框架 3】容错机制包括:推测执行(Speculative Execution),对慢任务启动备份任务,取先完成的结果;数据本地性优化,优先在数据所在节点调度任务以减少网络传输;对于 shuffle 阶段,map 输出会复制到多个节点,提高可靠性。
  4. 【回答框架 4】应用主节点失败时,YARN 会重新启动 Application Master,并从上次的作业状态恢复,依靠作业历史文件或检查点机制。节点失败时,该节点上的任务会被重新调度到其他节点执行。
  5. 【回答框架 5】一些框架还支持作业级容错,如定期写入检查点,但经典 MapReduce 主要依赖任务级重试和推测执行。
  6. 【关键点 1】任务失败通过重试机制恢复,超过最大重试次数则作业失败。
  7. 【关键点 2】推测执行通过启动备份任务应对慢任务,减少整体执行时间。
  8. 【关键点 3】map 输出通常存储本地,节点故障会导致任务重跑。
  9. 【关键点 4】应用主节点失败由 YARN 重启,并恢复作业状态。
  10. 【关键点 5】数据本地性优化降低网络开销,但不是严格容错机制。
  11. 【易错点 1】不要将推测执行误认为是为了容错,它主要针对性能问题。
  12. 【易错点 2】不要将所有失败都视为可自动恢复,如代码逻辑错误需人工干预。
  13. 【易错点 3】注意区分任务失败和作业失败,重试机制针对任务级别。