我想知道是否有方法重新加载oozie作业的配置文件而不重新启动oozie作业(协调器)。如何重新加载oozie作业配置文件而不重新启动oozie作业
由于协调员实际上运行了很多我们的任务,有时候我们可能只需要更改一行作业配置文件,然后进行更新,而不会干扰其他任务。
非常感谢。
我想知道是否有方法重新加载oozie作业的配置文件而不重新启动oozie作业(协调器)。如何重新加载oozie作业配置文件而不重新启动oozie作业
由于协调员实际上运行了很多我们的任务,有时候我们可能只需要更改一行作业配置文件,然后进行更新,而不会干扰其他任务。
非常感谢。
不是真的(你可以进入数据库表并进行更改,但如果使用嵌入式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
我发现答案非常有用。但在你的方法中,我有一个查询,如果在运行时需要可变的属性是jobTracker本身。 would'nt shell动作仍然指向旧的jobTracker并失败。 – faizan
协调器开始运行后,可以使用下面的命令更新oozie协调器的属性。更新unix文件系统中的属性文件,然后如下提交。
Oozie的工作-oozie http://namenodeinfo/oozie -config job.properties -update coordinator_job_id
注意,所有创建的协调版本(包括在待机状态的那些)仍将使用旧的配置。新的配置将在新版本的协调器实现时应用。
有什么办法可以使WAITING工作流程使用新的配置? –
截至目前无法让WAITING协调员使用新的配置。一旦处于WAITING状态的协调员完成了他们的运行,他们可以通过使用-refresh选项重新运行更新的配置,如下所示。 重新运行一个协调器行动或多个操作 实施例: $ Oozie的作业-rerun
所以这意味着没有完美的解决方案,对吧? – user1284984
非常感谢。 – user1284984