我想知道是否有办法重新加载 oozie 作业的配置文件而无需重新启动 oozie 作业( coordinator )。
因为 coordinator 实际上运行了很多我们的任务,所以有时我们只需要更改作业配置文件的一行,然后进行更新,而不会干扰其他任务。
非常感谢。
最新的 oozie 4.1 允许更新协调器定义。请参阅https://oozie.apache.org/docs/4.1.0/DG_CommandLineTool.html#Updating_coordinator_definition_and_properties
一旦协调器开始运行,就可以使用以下命令更新 oozie 协调器的属性。更新unix文件系统中的属性文件,然后提交如下。
oozie job -oozie http://namenodeinfo/oozie -config job.properties -update coordinator_job_id
请注意,所有创建的协调器版本(包括处于 WAITING 状态的协调器版本)仍将使用旧配置。新配置在实现时将应用于新版本的协调器。
不是真的(您可以进入数据库表并进行更改,但如果您使用嵌入式 Derby DB,则可能需要关闭 OOZIE,而且可能不建议这样做)。
如果您需要经常更改配置,请考虑将值下推到启动的 workflow.xml 文件中 - 您可以在协调器实例化之间更改此文件的内容。
您也可以(如果这是一次更改)杀死正在运行的协调器,进行更改并再次启动协调器,修改开始时间,这样以前的实例就不会被安排再次运行。
并不真地 :-)
这是你可以做的。
例子:
<action name="devices-location">
<shell xmlns="uri:oozie:shell-action:0.1">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<exec>hadoop</exec>
<argument>fs</argument>
<argument>-cat</argument>
<argument>/path/to/config/file.properties</argument>
<capture-output/>
</shell>
<ok to="report"/>
<error to="kill"/>
</action>
<action name="report">
<java>
...
<main-class>com.twitter.scalding.Tool</main-class>
<arg>--device-graph</arg>
<arg>${wf:actionData('devices-location')['path']}</arg>
<file>${scalding_jar}</file>
</java>
<ok to="end"/>
<error to="kill"/>
</action>
/path/to/config/file.properties 中 hdfs 中的配置文件如下所示:
path=/some/path/to/data