用于多个 mapreduce 作业的 Oozie

Oozie for multiple mapreduce jobs

我有一系列 mapreduce 作业需要 运行。我想知道为此使用 Oozie 是否有任何优势,而不是使用 "one big driver" 将 运行 该序列?

我知道 Oozie 可用于 运行 多种不同类型的操作,例如pig 脚本,shell 脚本,mr job,但我具体感兴趣的是我应该使用 Oozie 拆分我的两个作业和 运行 它们,还是只用一个 jar 来做到这一点?

Oozie 是一个调度程序 - 粗糙、文档不足,但它是一个调度程序。

  • 如果您本身不需要调度,或者边缘节点上的 CRON 就足够了
  • 如果您想自己处理工作流逻辑(例如,有条件的 分支,并行执行 w/ 等待落后者,调用 带有临时参数的通用子工作流,错误时的电子邮件警报, <在此处插入您的宠物特征>) 或不需要任何花哨的逻辑
  • 如果您自己处理执行日志和状态历史记录,或者不关心历史记录

...好吧,不要使用调度程序。

PS:您还有 Luigi (Spotify) 和 Azkaban (LinkedIn) 作为替代 Hadoop 调度程序。

[edit] 需要考虑的额外要点:如果您的 "driver" 由于任何原因崩溃,您可能没有机会发送警报;但是如果来自 Oozie 运行,崩溃最终会被检测到(在极端情况下可能需要多达 30 分钟,例如由于 YARN RM 故障转移导致 AM 作业自毁)