3

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

让我解释一下:我有一个简单的协调器,如下所示:

<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 小时,我希望协调员“实现”一个新的工作流实例/作业。

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

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

4

1 回答 1

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>

来自文档:

并发性:协调器作业可以为其协调器操作指定并发性,即在协调器引擎开始限制它们之前允许多少个协调器操作同时运行(运行状态)。

于 2015-07-31T12:20:05.347 回答