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

Apache 如何在不重新启动oozie作业的情况下重新加载oozie作业配置文件,apache,hadoop,hbase,hive,oozie,Apache,Hadoop,Hbase,Hive,Oozie,我想知道是否有办法在不重新启动oozie作业(协调器)的情况下重新加载oozie作业的配置文件 因为协调器实际上运行了我们的许多任务,所以有时我们可能只需要更改作业配置文件的一行,然后进行更新,而不会干扰其他任务 非常感谢。不太好(您可以进入数据库表进行更改,但如果您使用嵌入式Derby DB,则可能需要关闭OOZIE,而且可能不可取) 如果您需要经常更改配置,那么考虑将值向下推到启动的WorkFuff.xml文件中,您可以在协调器实例化之间更改该文件的内容。 您还可以(如果这是一次性更改)杀死

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

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

非常感谢。

不太好(您可以进入数据库表进行更改,但如果您使用嵌入式Derby DB,则可能需要关闭OOZIE,而且可能不可取)

如果您需要经常更改配置,那么考虑将值向下推到启动的WorkFuff.xml文件中,您可以在协调器实例化之间更改该文件的内容。 您还可以(如果这是一次性更改)杀死正在运行的协调器,进行更改,然后重新启动协调器,修改启动时间,这样以前的实例就不会计划再次运行。

不太可能:-)

这是你能做的

  • 创建另一个配置文件,其中包含您希望能够在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>
    

    最新的oozie 4.1允许更新协调器定义。请参见

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

    oozie作业-oozie-config job.properties-update coordinator\u job\u id


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

    我发现这个答案很有用。但我有一个问题,在您的方法中,如果在运行时要求可变的属性是jobTracker本身,该怎么办。shell操作是否仍会指向旧的jobTracker并失败。是否有任何方法使等待的工作流使用新配置?到目前为止,没有任何方法使等待的协调员使用新配置。处于等待状态的协调员完成运行后,可以使用下面的-refresh选项以更新的配置重新运行他们。重新运行协调器操作或多个操作示例:$oozie job-rerun[-refresh]
    path=/some/path/to/data