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

时间:2013-11-03 13:37:39

标签: apache hadoop hbase hive oozie

我想知道是否有办法在不重启oozie作业(协调员)的情况下重新加载oozie作业的配置文件。

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

非常感谢。

4 个答案:

答案 0 :(得分:3)

答案 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)

不是真的: - )

这是你可以做的。

  1. 使用您希望能够在hdfs中更改的属性创建另一个配置文件。
  2. 在工作流程的开头阅读此文件。
  3. 示例:

    <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