【问题标题】:oozie workflow Roll back action when killedoozie 工作流被杀死时回滚操作
【发布时间】:2015-07-20 18:19:49
【问题描述】:

我一直在尝试在 oozie 中的操作失败时触发操作
我可以使用以下节点的错误来做到这一点

<ok to="end"/>
<error to="kill"/>

如果我的要求是在 oozie 中当前操作失败时进行回滚,这将非常有效。
我一直在寻找的是在工作流程被终止的情况下触发一个步骤(如果有人进入工作流程并单击 HUE 中的终止按钮。)
当我通过 HUE 使用 oozie 时,我可以看到一个名为 kill 的节点在 workflow.xml 中生成。我试图将我的自定义操作放在这个空间中,但每次我保存 xml 时,工作流都会获得如下默认值

<kill name="kill">
    <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>

当 oozie 工作流被杀死时,有什么方法可以执行某些操作(某种回滚)?
有什么方法可以捕获 Kill 动作并触发另一个工作流? 我浏览了 oozie 文档,但没有成功。
非常感谢您在这方面的帮助。

【问题讨论】:

  • AFAIK Kill 节点是一个“死胡同”。将所有数据写入临时路径并在最后一步将其移动到最终预期的输出路径可能是一种常见的做法,这样您就不需要真正“回滚”
  • @Romain :我对 Kill 节点(死节点 - 没有任何反应)也有同样的理解,但我试图实现的是在 oozie 工作流程中超越 Kill 动作(使用 HUE) .我不确定这是否可以完成,但是如果可以完成,那么我可以覆盖终止节点并放置一个脚本,该脚本将从表(Hive / RDBMS)中回滚数据。或者,如果我当前的工作流程被终止,我可以触发工作流程吗? .当我在没有任何手动干预的情况下强行终止工作流时,我试图实现表的清理场景
  • 您可以尝试使用子工作流程

标签: hadoop oozie hue


【解决方案1】:

kill 节点中的name 属性是Kill 动作节点的名称。 消息元素的内容将被记录为工作流作业的终止原因。 终止节点没有过渡元素,因为它以 KILLED 结束工作流作业。

那么,您是否尝试过调用回滚操作,同时在“错误”中提及相同的操作,而不是调用 kill。 像

这样的东西
<ok to="end"/>
<error to="rollBack_action"/>

然后提到“rollBack_Action”之类的东西

 <action name='rollBack_action'>
                <java>
                        <job-tracker>${jobTracker}</job-tracker>
                        <name-node>${nameNode}</name-node>
                        <arg>action_roll_back</arg>
                </java>
                <ok to="end"/>
        </action>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-08
    • 2014-08-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    相关资源
    最近更新 更多