选用哪个,Apache Oozie 还是 Apache Airflow?需要做一份比较。

26

我对作业调度程序还不熟悉,想找一个在大数据集群上运行作业的调度程序。但是现有的选择让我感到困惑。相比于TWS、Autosys等已有的调度程序,发现Oozie存在很多限制。

请提供一些Oozie和Airflow之间的比较点。

非常感谢您的帮助。

1个回答

38

根据我的经验,目前Airflow 是最好的数据管道。它最适合管理复杂、长时间运行的工作流程。UI 和模块化程度都非常出色。

Airflow

  • + DAGs 的 Python 代码
  • + 拥有每个主要服务/云提供商的连接器
  • + 更加多功能
  • + 高级指标
  • + 更好的 UI 和 API
  • + 能够创建极其复杂的工作流程
  • + Jinja 模版
  • + 可用作 Tensorflow Extended 生态系统的编排器
  • = 可以并行处理
  • = 本地连接到 HDFS、HIVE、PIG 等等
  • = 以 DAG 形式呈现的图形

Oozie

  • --- 使用 Java 或 XML 编写 DAGs
  • - 很难构建复杂的管道
  • - 社区规模较小,不太活跃
  • - WEB GUI 较差
  • - Java API
  • = 可以并行处理
  • = 本地连接到 HDFS、HIVE、PIG 等等
  • = 以 DAG 形式呈现的图形

正如你所看到的,Airflow 是一个更容易使用(特别是在大型异构团队中),更加多功能和强大的选择,相比之下 Oozie 则较难使用。

正如我所说:选择 Airflow。

你可能会感兴趣的文章


3
Airflow 的另一个优点是:谷歌现在通过他们的新产品 Composer,提供了一个完全托管的使用 Kubernetes 分布式的 Airflow 版本。 - Michele 'Ubik' De Simoni
3
这对我来说看起来是一篇广告回应。 Java是真的吗?那Groovy、JRuby、Jython以及其他基于JVM的编程语言呢?在我看来,它比Python好一些,但Python也是一种不错的语言。我可以同意它看起来有点过时,但对于商业而言并不重要。 - Stanislav Trifan
如果有其他云服务提供商站出来并提供类似的东西,我会更新评论,不必管理您的分布式集群可以大大简化事情。虽然Python无疑更容易让人们掌握,更易于阅读和编写,但其真正的优势是直接访问最常用的数据科学库。我不是说Java比Python差,但在这种特定用例中,Python确实使事情变得更容易。 - Michele 'Ubik' De Simoni
我在Hadoop/Spark上的数据工程/科学项目中更多地使用Oozie。对于Python,我们可以在Oozie中使用bash脚本作为shell action,然后让bash完成所有Python相关的工作。 :) - ChikuMiku
8
我对Airflow不是很熟悉,但我可以补充一些需要考虑的事情:
  • 你看过Oozie的Fluent API吗?它可以用来构建复杂的数据处理流程
  • 可以使用HUE作为Web界面 https://github.com/cloudera/hue
  • 你需要处理时区吗?
  • 如何创建类似于Oozie的bundle
  • 如何为Airflow调度程序实现HASPoF
  • 许多公司都在使用Oozie进行大规模数据处理
  • Oozie是为Hadoop设计的。那么Airflow中的委派令牌呢?
  • 对于协调器和工作流程的服务级别协议(SLA)是什么?
- attila_s

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接