Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop oozie工作流终止时的回滚操作_Hadoop_Oozie_Hue - Fatal编程技术网

Hadoop 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中

我一直试图在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)。或者,如果当前工作流被终止,是否可以触发工作流。我试图为表实现一个清理场景,但我在没有任何手动干预的情况下强制终止了工作流。您可能可以尝试使用子工作流