Hadoop oozie工作流终止时的回滚操作
我一直试图在oozie中的操作失败时触发操作Hadoop oozie工作流终止时的回滚操作,hadoop,oozie,hue,Hadoop,Oozie,Hue,我一直试图在oozie中的操作失败时触发操作 我可以使用下面的错误节点来完成这项工作 <ok to="end"/> <error to="kill"/> <kill name="kill"> <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message> </kill> 如果我的要求是在oozie中
我可以使用下面的错误节点来完成这项工作
<ok to="end"/>
<error to="kill"/>
<kill name="kill">
<message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
如果我的要求是在oozie中当前操作失败时执行回滚,那么这将非常有效。我想要的是在工作流被终止时触发一个步骤(如果有人进入工作流并单击色调中的“终止”按钮)。
我可以看到一个名为kill的节点,当我通过HUE使用oozie时,它在workflow.xml中生成。我试图将我的自定义操作放在这个空间中,但每次保存xml时,工作流都会得到默认值,如下所示
<ok to="end"/>
<error to="kill"/>
<kill name="kill">
<message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
操作失败,错误消息[${wf:errorMessage(wf:lastErrorNode())}]
当oozie工作流被终止时,是否有方法执行某些操作(某种回滚)
有没有办法捕获Kill操作并触发另一个工作流?
我浏览了oozie文档,但没有成功。非常感谢您在这方面的帮助。kill节点中的name属性是kill操作节点的名称。 消息元素的内容将被记录为工作流作业的终止原因。 kill节点没有转换元素,因为它以kill结束工作流作业 因此,您是否尝试调用回滚操作,同时在“error to”中提及相同的操作,而不是调用kill。 比如
<ok to="end"/>
<error to="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>
${jobTracker}
${nameNode}
回退行动
kill节点中的name属性是kill操作节点的名称。
消息元素的内容将被记录为工作流作业的终止原因。
kill节点没有转换元素,因为它以kill结束工作流作业
因此,您是否尝试调用回滚操作,同时在“error to”中提及相同的操作,而不是调用kill。
比如
<ok to="end"/>
<error to="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>
${jobTracker}
${nameNode}
回退行动
AFAIK杀伤节点是一个“死胡同”。通常的做法是将所有数据写入临时路径,并在最后一步将其移动到最终的预期输出路径,这样您就不需要真正“回滚”@Romain:我对Kill节点也有相同的理解(死节点-什么都不会发生),但我试图实现的是超越oozie工作流中的Kill操作(使用色调)。我不确定是否可以这样做,但如果可以这样做,那么我可以覆盖kill节点并放置一个脚本,该脚本将从表中回滚数据(Hive/RDBMS)。或者,如果当前工作流被终止,是否可以触发工作流。当我在没有任何手动干预的情况下强制终止工作流时,我正试图实现表的清理场景。您可以尝试使用子工作流。很可能,终止节点是一个“死胡同”。通常的做法是将所有数据写入临时路径,并在最后一步将其移动到最终的预期输出路径,这样您就不需要真正“回滚”@Romain:我对Kill节点也有相同的理解(死节点-什么都不会发生),但我试图实现的是超越oozie工作流中的Kill操作(使用色调)。我不确定是否可以这样做,但如果可以这样做,那么我可以覆盖kill节点并放置一个脚本,该脚本将从表中回滚数据(Hive/RDBMS)。或者,如果当前工作流被终止,是否可以触发工作流。我试图为表实现一个清理场景,但我在没有任何手动干预的情况下强制终止了工作流。您可能可以尝试使用子工作流