如何在特定频率强制实施协调员行动?

时间:2015-07-31 10:56:41

标签: oozie oozie-coordinator

我想知道是否有可能/如何强制协调员定期实现或实例化工作流,即使先前的实例化工作流尚未完成。

让我解释一下: 我有一个简单的协调员看起来像这样:

<coordinator-app name="myApp" frequency="${coord:hours(3)}" start="2015-01-01T0:00Z" end="2016-01-01T00:00Z" timezone="UTC" xmlns="uri:oozie:coordinator:0.4">
   <action>
      <workflow>
         <app-path>${myPath}/workflow.xml</app-path>
      </workflow>
   </action>
</coordinator-app>

频率设置为3小时。每3个小时,我希望协调员能够实现&#34;新的工作流实例/作业。

这是我的问题:当工作流程执行持续时间超过3小时时,协调员不会实现新的工作流程实例,而是等待当前正在运行的工作流程先完成。然后它将实例化下一个工作流程。协调员发起的工作流程如果持续时间超过频率则会排队。

如何协调员每3小时开始一项新工作,无论如何? 谢谢

1 个答案:

答案 0 :(得分:2)

您应该使用concurrency属性。默认情况下它是一个,这就是排队问题的原因。设置它与您认为合理的一样大。

   <coordinator-app name="[NAME]" frequency="[FREQUENCY]" 
                    start="[DATETIME]" end="[DATETIME]" timezone="[TIMEZONE]" 
                    xmlns="uri:oozie:coordinator:0.1">
      <controls>
        <concurrency>[CONCURRENCY]</concurrency>
      </controls>

来自docs:

  

并发:协调器作业可以指定协调器操作的并发性,即协调器引擎启动限制之前允许并发运行的协调器操作数(RUNNING状态)。