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

请说明在 Airflow 中实现任务自动化重启与失败恢复的具体方式,包括相关机制和配置。

数据技术原理方案权衡问题排查Apache Airflow

考察说明

考查对 Airflow 任务调度可靠性机制的理解,特别是失败重试与恢复能力。

回答思路

  1. 【回答框架 1】Airflow 通过 TaskInstance 管理任务执行状态。任务失败时,默认不会自动重试,需要在 DAG 或任务级别配置 retries 和 retry_delay 参数,分别指定重试次数和重试间隔。
  2. 【回答框架 2】调度器 Scheduler 会周期性地根据 DAG 定义和任务状态决定是否重新调度失败的任务。对于未完成或失败的任务,若配置了重试,会重新排队执行;否则标记为失败。
  3. 【回答框架 3】对于整个 DAG 的运行失败,可以通过设置 depends_on_past 等依赖关系控制执行顺序,但自动化重启通常依赖于重试机制。此外,Airflow 还支持 SLA 监控和告警,失败时可发送邮件或触发自定义回调,便于人工介入。
  4. 【回答框架 4】在更高层面,可以使用 Airflow 的 REST API 或 CLI 手动触发 DAG 运行,但自动化恢复主要依赖重试和调度器的幂等性设计。对于长期运行的任务,应确保任务幂等,以支持安全重试。
  5. 【回答框架 5】实际生产中,为减少失败影响,可设置合理的重试次数和指数退避,并配合资源池和队列管理,避免失败任务过多占用资源。
  6. 【关键点 1】配置 retries 和 retry_delay 实现任务级重试
  7. 【关键点 2】调度器根据任务状态和重试配置自动重新调度失败任务
  8. 【关键点 3】任务幂等性是安全重试的前提
  9. 【关键点 4】可通过 SLA 和告警及时感知失败,辅助人工恢复
  10. 【易错点 1】重试次数过多可能导致任务延迟累积,需平衡重试参数
  11. 【易错点 2】如果任务不是幂等的,重试可能产生重复数据或副作用
  12. 【易错点 3】仅依赖重试无法处理 DAG 级结构性失败,需结合告警和人工介入