首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有误启动的Oozie行为

有误启动的Oozie行为
EN

Stack Overflow用户
提问于 2015-08-05 12:58:40
回答 2查看 819关注 0票数 0

我注意到,如果我在当前时间之前启动一个Oozie协调器的启动时间为多个“迭代”(就频率而言),那么协调器将连续运行几次工作流,而忽略指定的频率。然而,对我来说,工作流/动作以指定的频率运行比工作流/动作在给定的时间点运行正确次数更重要。

有什么办法可以避免这种行为吗?显然,一种方法是确保在迭代时间内开始时间是正确的(是否有一种方法可以让它自动获得开始时间)。另一种方法是将其配置为完全避免这种行为,并且在下一次它应该给出启动时间和频率时基本运行。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-05 20:41:58

避免“过去”开始约会的副作用的明显方法是.将提交时的实际开始日期设置为“立即”。

我的团队就是这么做的:

  • 在本地文件系统上,写下一个带有占位符的"Coord-template.xml“,比如start="%Now%”。
  • 在提交之前,生成实际的"Coordinator.xml“ sed“s”/%Now/$(日期-utc '+%FT%TZ')/“coord-template.xml > coordinator.xml
  • 将协调器定义上载到HDFS,然后通过Oozie CLI提交
代码语言:javascript
运行
复制

元原语:如果您使用的是“基本”频率(而不是类似CRON的调度),您可能希望尝试这些方法,让Oozie为所有“过去”时隙创建执行程序,但立即丢弃它们:

代码语言:javascript
运行
复制
  <throttle>1</throttle>

和/或

代码语言:javascript
运行
复制
  <execution>LAST_ONLY</execution>

请参阅Oozie 4.x参考

如果协调员被暂停然后恢复工作,或者Oozie服务被停止然后重新启动,或者纱线不得不在相当长的时间内排队等待新的工作(因为集群100%繁忙),这些规则也适用。

票数 0
EN

Stack Overflow用户

发布于 2016-08-10 23:13:28

Oozie最近有所改进,因此有一个比当前接受的答案更简单的解决方案。在Oozie 4.1中,有一个“无”的执行。这或多或少地跳过了过去发生的迭代。这是医生的片段:

NONE:与LAST_ONLY相似,只是跳过了所有旧的物化。当未设置任何操作时,当当前时间超过操作的正常时间时,将跳过正在等待或准备的操作。默认情况下,阈值为1分钟。例如,假设操作1和2都在等待,当前时间是下午5:20,而两个操作的标称时间都在下午5:19之前。这两个操作都将被跳过,假设它们在此之前不会转换到提交(或终端状态)。考虑这一点的另一种方法是将超时设置为等于1分钟(这是最小的时间单位),但跳过的状态不会导致协调任务最终变为DONEWITHERROR,而且实际上可以成功(即它是TIMEDOUT的“好”版本)。

Oozie 4.1医生

我对此进行了测试,它确实适用于CRON频率。在您的情况下,它优于LAST_ONLY执行,因为除了当前/未来的迭代之外,LAST_ONLY还将在过去运行最近的迭代(使用错误对齐的时间)。

代码语言:javascript
运行
复制
<execution>NONE</execution>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31833273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档