【问题标题】:Oozie Re-run the workflow from the node, where it was last killedOozie 从最后被杀死的节点重新运行工作流
【发布时间】:2025-12-30 18:15:15
【问题描述】:

我在 oozie 中使用 MR 动作。并且想在 MR 上使用 oozie 提供的挂起/恢复功能。

问题 - 但是,当我们在 Oozie 上调用“暂停”时,它不会终止 hadoop 作业,而是只会更新 oozie 状态,而 hadoop 作业会继续运行直至完成。我希望在 oozie 工作流程暂停时立即终止 hadoop 作业。你猜这不可能吧?

所以,我想我可以终止 oozie 工作流程并重新运行它。 但现在的问题是,如果我的工作流程中有 3 个操作节点,我不想重新运行所有这些节点。

我是在这里抽烟还是可以访问最后一个成功的 oozie 节点(很可能存储在 mysql 数据库中)?

对我的纵容用例有更好的方法吗?

提前感谢您的帮助,

附:我没有发布我的工作流程,因为它是一个简单的工作流程,有几个 map-reduce 操作,这里没有火箭科学。

【问题讨论】:

    标签: hadoop oozie


    【解决方案1】:

    oozie 命令行界面允许在以下上下文中使用标志“-rerun”:

    oozie job -oozie http://localhost:11000/oozie -config job.properties -rerun 14-20090525161321-oozie-joe
    

    重新运行的自动化存在一个问题,即您必须使用 oozie.wf.rerun.skip.nodes 变量在 job.properties 文件中提供要跳过的操作节点列表。 以下内容来自source

    只有以下两种配置之一是强制性的。两者不应同时定义 oozie.wf.rerun.skip.nodes
    oozie.wf.rerun.failnodes
    跳过节点是逗号分隔的操作名称列表。它们可以是任何动作节点,包括决策节点。
    oozie.wf.rerun.failnodes 的有效值为真或假。 如果使用安全的hadoop版本,还需要指定以下两个属性 mapreduce.jobtracker.kerberos.principal dfs.namenode.kerberos.principal.

    为了实现自动化,您可能值得花时间尝试在完成操作时使用 shell 脚本或将其直接实施到 MR 作业中附加到属性文件。

    【讨论】: