是否可以在不终止 Oozie 工作流的情况下记录消息
Is it possible to log a message from an Oozie Workflow without killing it
我有一个有点复杂的 Oozie 工作流程,我希望能够在流程的不同点看到一些属性。显而易见的解决方案是简单地将消息写入日志。
我已经完成了 official documentation,看来唯一支持日志记录的操作是 Kill 操作!
有没有办法在不终止工作流的情况下记录一组属性?
更新(提供更多细节)
想象一下我的(简化的)工作流程是这样的:
<workflow-app name="myWorkflow" xmlns="uri:oozie:workflow:0.5">
<start to="action1"/>
<kill name="Kill">
<message>Failed: error ${myField}</message>
</kill>
<action name='action1'>
<java>
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>mapred.job.queue.name</name>
<value>default</value>
</property>
</configuration>
<main-class>my.Class</main-class>
<arg>${myArgument}</arg>
<capture-output/>
</java>
<ok to="action2" />
<error to="Kill" />
</action>
<action name='action2'>
<ok to="End" />
<error to="Kill" />
</action>
<end name="End"/>
</workflow-app>
在工作流中,我有名为 ${myField}、${myArgument}、${jobTracker} 和 ${nameNode} 的字段。其中一些是由启动过程设置的属性,其他属性将由我从 'action1' 调用的 Java class 设置。
在执行 'action1' 和 'action2' 之间,我想记录这些字段的值。我不太关心值记录到哪里,我只需要能够看到这些值是什么。
我不想调用我的 'kill' 操作来进行日志记录,因为 'action2' 是 运行 很重要。
我能看到的一种方法是,您可以在工作流程的末尾放置一个 shell 脚本,并将要作为参数记录到 shell 脚本的值。在 shell 脚本中,将这些参数的值写入文件并将文件复制到 hdfs。
作业完成后,您可以检查存储在 hdfs 中的文件中这些属性的值。
希望对您有所帮助。
我有一个有点复杂的 Oozie 工作流程,我希望能够在流程的不同点看到一些属性。显而易见的解决方案是简单地将消息写入日志。
我已经完成了 official documentation,看来唯一支持日志记录的操作是 Kill 操作!
有没有办法在不终止工作流的情况下记录一组属性?
更新(提供更多细节)
想象一下我的(简化的)工作流程是这样的:
<workflow-app name="myWorkflow" xmlns="uri:oozie:workflow:0.5">
<start to="action1"/>
<kill name="Kill">
<message>Failed: error ${myField}</message>
</kill>
<action name='action1'>
<java>
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>mapred.job.queue.name</name>
<value>default</value>
</property>
</configuration>
<main-class>my.Class</main-class>
<arg>${myArgument}</arg>
<capture-output/>
</java>
<ok to="action2" />
<error to="Kill" />
</action>
<action name='action2'>
<ok to="End" />
<error to="Kill" />
</action>
<end name="End"/>
</workflow-app>
在工作流中,我有名为 ${myField}、${myArgument}、${jobTracker} 和 ${nameNode} 的字段。其中一些是由启动过程设置的属性,其他属性将由我从 'action1' 调用的 Java class 设置。 在执行 'action1' 和 'action2' 之间,我想记录这些字段的值。我不太关心值记录到哪里,我只需要能够看到这些值是什么。
我不想调用我的 'kill' 操作来进行日志记录,因为 'action2' 是 运行 很重要。
我能看到的一种方法是,您可以在工作流程的末尾放置一个 shell 脚本,并将要作为参数记录到 shell 脚本的值。在 shell 脚本中,将这些参数的值写入文件并将文件复制到 hdfs。
作业完成后,您可以检查存储在 hdfs 中的文件中这些属性的值。
希望对您有所帮助。