我想知道是否有办法在不重启oozie作业(协调员)的情况下重新加载oozie作业的配置文件。
因为协调员实际上运行了很多我们的任务,有时我们只需要更改作业配置文件的一行,然后进行更新,而不会干扰其他任务。
非常感谢。
答案 0 :(得分:3)
最新的oozie 4.1允许更新协调器定义。见https://oozie.apache.org/docs/4.1.0/DG_CommandLineTool.html#Updating_coordinator_definition_and_properties
答案 1 :(得分:2)
协调员开始运行后,可以使用以下命令更新oozie协调器的属性。更新unix文件系统中的属性文件,然后按如下所示提交。
oozie job -oozie http://namenodeinfo/oozie -config job.properties -update coordinator_job_id
请注意,所有创建的协调器版本(包括处于WAITING状态的版本)仍将使用旧配置。实现时,新配置将应用于新版本的协调员。
答案 2 :(得分:1)
不是真的(你可以进入数据库表并进行更改,但如果使用嵌入式Derby DB,可能需要关闭OOZIE,而且可能不建议)。
如果您需要经常更改配置,请考虑将值推送到已启动的workflow.xml文件中 - 您可以在协调器实例化之间更改此文件的内容。
您也可以(如果这是一次性更改)终止正在运行的协调员,进行更改并再次启动协调器,修改开始时间,以便不再安排先前的实例再次运行。
答案 3 :(得分:1)
不是真的: - )
这是你可以做的。
示例:
<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