请说明在 Azkaban 中,当任务执行失败时通常采取哪些处理措施,以及可配置的重试策略有哪些?
考察说明
考察对 Azkaban 任务失败处理机制和重试配置的了解。
回答思路
- 【回答框架 1】Azkaban 中任务失败默认会终止当前流程,并标记为失败。处理方式包括重试、失败后继续、失败通知等,均通过 Flow 或 Job 配置实现。
- 【回答框架 2】重试策略:在 Job 属性中设置 retries 为重试次数,retry.backoff 为重试间隔(毫秒)。支持固定间隔和指数退避。可针对单个 Job 或全局配置。
- 【回答框架 3】失败后处理:若某 Job 失败,默认整个 Flow 失败。可通过配置 'failure.emails' 发送邮件,或设置 'on.failure' 行为(如继续后续 Job,但通常不建议)。
- 【回答框架 4】重试触发条件:Azkaban 根据退出码判断成功与否,可自定义成功退出码。重试仅在任务尚未成功执行时触发,重试次数用尽仍失败则整体失败。
- 【回答框架 5】监控与运维:通过 Web UI 查看执行日志、失败原因,支持手动重试或跳过失败任务,也支持调度层面设置失败重跑。
- 【关键点 1】默认失败即终止流程,需配置 retries 和 retry.backoff 实现自动重试。
- 【关键点 2】重试次数用尽仍失败,会触发失败处理逻辑(告警、停止等)。
- 【关键点 3】可通过自定义成功退出码来控制失败判定,避免误判。
- 【易错点 1】未区分重试与重新提交:重试是同一 Job 重新执行,重新提交是重新运行整个 Flow。
- 【易错点 2】指数退避可能导致长时间等待,需合理设置 retry.backoff。
- 【易错点 3】失败后继续执行可能掩盖问题,需评估业务影响。