Apache Airflow或Argoproj可在kubernetes上长期运行和执行DAG任务

时间:2019-07-15 09:54:47

标签: kubernetes google-cloud-platform celery airflow argoproj

我们在k8s中有很多长期运行的,占用大量内存/ cpu的作业,这些作业与celery在google cloud平台上的kubernetes上一起运行。但是,我们在缩放/重试/监视/警报/交付保证方面存在很大的问题。我们希望从celery转向一些更高级的框架。

有一个比较:https://github.com/argoproj/argo/issues/849,但这还不够。

气流:

  • 在社区中获得了更好的支持,SO上的〜400 vs〜12标签,1.3万颗星 约3.5k星
  • 定义流的python方法比只使用yamls感觉更好
  • 作为产品的GCP支持:Cloud Composer
  • 更好的仪表板
  • 一些不错的运算符,例如电子邮件运算符

Argoproj:

  • Kubernetes的本地支持(我想它会更好一些)
  • 支持CI / CD /事件,将来可能会有用
  • (可能)更好地支持将结果从一项工作传递到另一项工作(在Airflow xcom机制中)

我们的DAG并没有那么复杂。我们应该选择哪些框架?

1 个答案:

答案 0 :(得分:1)

“惯用气流”并不是真正设计用来自己执行长时间运行的作业。相反,Airflow旨在充当启动另一个服务中的计算任务(由操作员完成)的助手,同时监视给定计算任务的状态(由Sensor完成)。

以您的示例为例,Airflow中必要的任何计算任务都将由使用的给定服务的适当操作员启动(Airflow具有用于简化此操作的GCP挂钩),并且适当的Sensor会确定任务何时完成且不再被阻止下游任务取决于该操作。

虽然对Argoproj的细节不是很熟悉,但它似乎不像Airflow这样的“调度系统”,而像是用来编排并实际执行大部分计算的系统。