【问题标题】:How can I reload oozie job configuration file without restart oozie job如何在不重新启动 oozie 作业的情况下重新加载 oozie 作业配置文件
【发布时间】:2013-11-03 13:37:38
【问题描述】:

我想知道是否有一种方法可以在不重新启动 oozie 作业(协调器)的情况下重新加载 oozie 作业的配置文件。

因为coordinator实际上运行了很多我们的task,有时候我们只需要修改job配置文件中的一行,然后进行更新,就不会影响到其他task。

非常感谢。

【问题讨论】:

    标签: apache hadoop hbase hive oozie


    【解决方案1】:

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 有什么方法可以让 WAITING 工作流使用新配置?
      • 目前还没有办法让 WAITING 协调器使用新配置。处于 WAITING 状态的协调器完成运行后,可以使用以下 -refresh 选项使用更新的配置重新运行它们。重新运行协调器操作或多个操作示例:$oozie job -rerun [-refresh]
      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

        不是真的:-)

        这是你可以做的。

        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
        

        【讨论】:

        • 我发现这个答案非常有用。但是我有一个查询,在您的方法中,如果在运行时需要可变的属性是 jobTracker 本身怎么办。不会 shell 动作仍然指向旧的 jobTracker 并失败。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-10
        • 1970-01-01
        • 2014-11-15
        • 1970-01-01
        • 2010-09-15
        • 1970-01-01
        相关资源
        最近更新 更多