在 Azkaban 中,当一个任务执行失败后,系统是如何实现自动化恢复的?请说明其自动重试的机制和配置方式。
考察说明
考查对 Azkaban 任务调度失败处理机制的理解,包括自动重试的触发条件和配置方法。
回答思路
- 【回答框架 1】Azkaban 通过 Flow 中的任务节点状态来管理失败重试。默认情况下,任务失败后 Flow 会中止,但可以通过配置重试次数和重试间隔实现自动化恢复。
- 【回答框架 2】在 Job 配置中设置 retries 与 retry.backoff 参数。retries 指定重试次数,retry.backoff 指定每次重试的等待时间(毫秒)。任务失败时,Azkaban 会按此配置自动重新执行任务,直到达到重试上限或成功。
- 【回答框架 3】若重试后仍失败,可配置 Failure Policy 为 Continue 或 Finish,使 Flow 跳过失败任务继续执行后续任务,或选择整体失败。此外,可设置告警通知。
- 【回答框架 4】恢复机制还涉及 Flow 级的重试,通过 Flow 参数如 retry 支持整体重跑。但需注意,重试可能重复执行,需保证任务幂等性,例如使用唯一标识或幂等操作。
- 【回答框架 5】自动化恢复与异常处理相关,还需考虑依赖关系:若上游失败,下游可配置为不执行或等待重试。
- 【关键点 1】Azkaban 支持按 Job 级别配置 retries 和 retry.backoff 实现自动重试。
- 【关键点 2】任务重试需保证幂等,避免重复执行产生错误数据。
- 【关键点 3】可配置失败策略(如 Continue)实现部分成功流程的继续执行。
- 【易错点 1】重试次数过多可能导致长时间延迟,需合理设置。
- 【易错点 2】忽略任务幂等性会导致重试后数据重复或状态不一致。
- 【易错点 3】Flow 级别整体重试可能影响其他任务执行,需谨慎使用。