【发布时间】:2018-04-18 06:32:03
【问题描述】:
我有一个 oozie 协调器,它每 30 分钟运行一次。
但我想一次只运行一个实例。
(比如说,如果工作流需要超过 30 分钟才能完成,我不希望下一个计划的工作流在前一个完成之前开始运行)
我可以在 coordinator.xml 中设置一个配置属性来实现这一点吗?
【问题讨论】:
标签: scheduling oozie oozie-coordinator oozie-workflow
我有一个 oozie 协调器,它每 30 分钟运行一次。
但我想一次只运行一个实例。
(比如说,如果工作流需要超过 30 分钟才能完成,我不希望下一个计划的工作流在前一个完成之前开始运行)
我可以在 coordinator.xml 中设置一个配置属性来实现这一点吗?
【问题讨论】:
标签: scheduling oozie oozie-coordinator oozie-workflow
您可以为您的协调器指定并发选项,即给定协调器可以同时执行多少个操作。 您还可以指定执行策略和超时来控制是否应跳过操作、何时重叠以及哪些操作。
<coordinator-app name="[NAME]" frequency="[FREQUENCY]"
start="[DATETIME]" end="[DATETIME]" timezone="[TIMEZONE]"
xmlns="uri:oozie:coordinator:0.1">
<controls>
<timeout>[TIME_PERIOD]</timeout>
<concurrency>[CONCURRENCY]</concurrency>
<execution>[EXECUTION_STRATEGY]</execution>
</controls>
...
但据我所知,这在 Oozie 3.3 版中效果不佳。您可以尝试使用较新的版本。
【讨论】:
concurrency 一直有效,execution 在 V4.1 中已修复 (确切版本待定) 和 timeout 具有误导性,因为它不适用于正在运行的作业但是到“等待数据集”协调子句。
uri:oozie:coordinator:0.1;当前架构规范是 0.5,使用旧版本是阻止新功能和改进的好方法...