7

我想知道是否有办法重新加载 oozie 作业的配置文件而无需重新启动 oozie 作业( coordinator )。

因为 coordinator 实际上运行了很多我们的任务,所以有时我们只需要更改作业配置文件的一行,然后进行更新,而不会干扰其他任务。

非常感谢。

4

4 回答 4

5

最新的 oozie 4.1 允许更新协调器定义。请参阅https://oozie.apache.org/docs/4.1.0/DG_CommandLineTool.html#Updating_coordinator_definition_and_properties

于 2015-01-06T18:39:50.327 回答
5

一旦协调器开始运行,就可以使用以下命令更新 oozie 协调器的属性。更新unix文件系统中的属性文件,然后提交如下。

oozie job -oozie http://namenodeinfo/oozie -config job.properties -update coordinator_job_id

请注意,所有创建的协调器版本(包括处于 WAITING 状态的协调器版本)仍将使用旧配置。新配置在实现时将应用于新版本的协调器。

于 2017-02-22T19:35:52.730 回答
1

不是真的(您可以进入数据库表并进行更改,但如果您使用嵌入式 Derby DB,则可能需要关闭 OOZIE,而且可能不建议这样做)。

如果您需要经常更改配置,请考虑将值下推到启动的 workflow.xml 文件中 - 您可以在协调器实例化之间更改此文件的内容。

您也可以(如果这是一次更改)杀死正在运行的协调器,进行更改并再次启动协调器,修改开始时间,这样以前的实例就不会被安排再次运行。

于 2013-11-03T23:14:21.940 回答
1

并不真地 :-)

这是你可以做的。

  1. 创建另一个配置文件,其中包含您希望能够在 hdfs 中更改的属性。
  2. 在工作流程开始时阅读此文件。

例子:

<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
于 2013-11-07T18:56:51.633 回答