如何在不重新启动oozie作业的情况下重新加载oozie作业配置文件

wlwcrazw  于 2021-06-03  发布在  Hadoop
关注(0)|答案(4)|浏览(337)

我想知道是否有办法在不重新启动oozie作业(协调器)的情况下重新加载oozie作业的配置文件。
因为协调器实际上运行了我们的许多任务,也许有时我们只需要更改作业配置文件的一行,然后进行更新,而不会干扰其他任务。
非常感谢你。

uyhoqukh

uyhoqukh1#

不太可能(您可以进入数据库表并进行更改,但是如果您使用嵌入式derby db,则可能需要关闭oozie,而且可能不可取)。
如果您需要经常更改配置,那么可以考虑将该值下推到已启动的workflow.xml文件中—您可以在协调器示例化之间更改该文件的内容。
您还可以(如果这是一次性更改)终止正在运行的协调器,进行更改并重新启动协调器,修改开始时间,这样以前的示例就不会被安排再次运行。

lnlaulya

lnlaulya2#

一旦协调器开始运行,可以使用下面的命令更新oozie协调器的属性。在unix文件系统中更新属性文件,然后按以下方式提交。
好工作-好工作http://namenodeinfo/oozie -config job.properties-更新协调器作业id
请注意,所有创建的协调器版本(包括处于等待状态的版本)仍将使用旧配置。新的配置将在新版本的协调器实现时应用于它们。

n7taea2i

n7taea2i3#

不是真的:-)
这是你能做的。
创建另一个配置文件,其属性可以在hdfs中更改。
在工作流的开头阅读此文件。
例子:

<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>

其中hdfs中位于/path/to/config/file.properties的配置文件如下所示:

path=/some/path/to/data
bpsygsoo

bpsygsoo4#

最新的oozie4.1允许更新协调器定义。看到了吗https://oozie.apache.org/docs/4.1.0/dg_commandlinetool.html#updating_coordinator_definition_and_properties

相关问题