如何重启处于Killed状态且常规-rerun无效的Oozie Bundle作业?
已标记Killed的Oozie Bundle作业恢复操作步骤
操作无效的核心原因
你之前两次尝试失败的本质是:Oozie对处于Killed终态的Bundle、Coordinator作业实例,直接执行作业级别的-rerun、或者单Action级别的-rerun,都不会触发有效的状态流转——因为你当初是手动终止了整个Coordinator作业,属于作业级别的终止动作,而非单个Action异常终止,Oozie的状态校验逻辑会拦截不满足层级要求的重跑请求。
落地操作流程
- 第一步:确认作业真实状态
分别查询Bundle、关联Coordinator的状态,确认二者均为KILLED终态:- 查询Bundle状态:
oozie job -info <对应Bundle作业ID> - 查询关联Coordinator状态:从Bundle返回的详情中提取关联的Coordinator作业ID,执行
oozie job -info <对应Coordinator作业ID>
- 查询Bundle状态:
- 第二步:执行Coordinator层级的全量重跑
不要只针对Coordinator下的单个Action发起重跑请求——由于Coordinator整体已经是Killed终态,单Action的重跑请求会被状态校验拦截,无法生成新的执行实例。正确的Coordinator重跑命令为:oozie job -rerun <Coordinator_ID> -refresh -all
命令参数说明:-all:指定重跑Coordinator下所有未完成执行的实例,覆盖作业级别的Killed状态标记-refresh:强制加载最新的作业配置定义,不沿用之前终止时的旧配置缓存
- 第三步:同步恢复Bundle作业状态
待Coordinator作业从Killed状态流转回正常RUNNING状态后,再对原Killed状态的Bundle执行强制刷新的重跑命令:oozie job -rerun <Bundle_ID> -refresh
此时Oozie会重新建立Bundle与关联Coordinator的状态映射,清除之前同步标记的Killed状态。
避坑提醒
- 禁止在关联Coordinator仍为Killed状态时直接重跑Bundle:此时Bundle会感知到关联Coordinator的终止状态,即使发起重跑请求,也不会更新自身的Killed标记
- 禁止仅对Coordinator下的单个Action发起重跑:作业级别的Killed标记优先级高于单Action的重跑逻辑,单Action请求不会被正常调度
内容的提问来源于stack exchange,提问作者Jagadeesh
相关产品推荐
相关产品推荐

