Airflow 与 AWS Step Functions 的工作流程

问题描述 投票:0回答:3

我正在开发一个项目,该项目从 AWS S3 获取一组输入数据,对其进行预处理和分配,启动 10K 批处理容器以在 AWS Batch 上并行处理分配的数据,后聚合数据并推送到S3。

我已经拥有来自其他项目的 Airflow + Batch 的软件模式,但尚未处理 10k 并行任务的缩放因子。 Airflow 很好,因为我可以查看哪些任务失败并在调试后重试任务。但在一个 Airflow EC2 实例上处理这么多任务似乎是一个障碍。另一种选择是让一个任务启动 10k 容器并从那里监视它。

我没有使用 Step Functions 的经验,但听说它是 AWS 的 Airflow。网上似乎有很多 Step Functions + Batch 的模式。 Step Functions 似乎是检查我的用例的好方法吗?对于失败的作业/重试任务的能力,您是否能获得与使用 Airflow 相同的见解?

airflow aws-step-functions
3个回答
122
投票

我曾研究过 Apache Airflow 和 AWS Step Functions,以下是一些见解:

  • Step Functions 提供开箱即用的维护。它具有您的用例所需的高可用性和可扩展性,对于 Airflow,我们必须在服务器或容器 (kubernetes) 上进行自动扩展/负载平衡。*
  • Airflow 和 Step Functions 都具有用户友好的 UI。虽然 Airflow 支持状态机的多种表示形式,但 Step Functions 仅将状态机显示为 DAG。
  • 从版本 2.0 开始,Airflow 的 Rest API 现在稳定。 AWS Step Functions 还受到一系列生产分级 cli 和SDK的支持。
  • Airflow 有服务器成本,而 Step Functions 每月有 4000 次免费步骤执行(免费套餐),此后每步骤 0.000025 美元。例如如果您使用每天运行一次的 AWS Batch 10K 步骤,则每天的价格为 0.25 美元(每月 7.5 美元)。 Airflow 服务器(t2.large ec2 1 年预留实例)的价格为每月 41.98 美元。无论哪种情况,我们都必须使用 AWS Batch。**
  • AWS Batch 可以集成到 AirflowStep Functions
  • 您可以在 Apache Airflow 中清除并重新运行失败的任务,但在 Step Functions 中,您必须创建一个 自定义实现 来处理该任务。您也可以在 Step Functions 定义中处理带有退避功能的自动重试。
  • 对于 Step Functions 中失败的任务,单击它时您将获得失败状态的可视化表示和详细消息。您还可以使用 aws cli 或 sdk 来获取详细信息。
  • Step Functions 使用易于使用的 JSON 作为状态机定义,而 Airflow 使用 Python 脚本。
  • Step Functions 支持
  • 异步回调,即状态机暂停,直到外部源通知它恢复。虽然 Airflow 尚未添加此功能。 (更新:现在添加:Callbacks
总的来说,我看到了使用 AWS Step Functions 的更多优势。您必须根据您的用例考虑这两项服务的维护成本和开发成本。

更新(Apache Airflow 服务的 AWS 托管工作流程):

    *借助 AWS Managed Workflows for Apache Airflow 服务,您可以将 Airflow 服务的部署、维护、自动扩展/负载平衡和安全性卸载到 AWS。但请考虑您愿意接受的版本号,因为 AWS 托管服务大多落后于最新版本。 (例如截至2021年3月8日,开源airflow的最新版本是2.01,而MWAA允许版本1.10.12)
  • **MWAA 环境、实例和存储成本。
  • 更多详情请点击这里

7
投票
我在个人和工作项目中使用了 Airflow 和 Step Functions。

    总的来说,我喜欢步骤函数,但事实上,您需要使用事件桥来安排执行,这非常烦人。实际上我认为这里气流可以充当阶跃函数的触发器。
  • 如果 Airflow 的管理成本更低,我总是会选择它,因为我发现每当您需要绕开主要用例时,管理基于 Json 的管道都很麻烦。这种情况总是以某种方式发生在我身上。当您需要进行源代码控制时,这会变得更加复杂。
  • 这是一个比较主观的评估,但我发现 Airflow 的监控能力远远大于 Step Functions。
还有一些有关 Airflow 与 Step 函数使用的信息

enter image description here


-4
投票
AWS 目前有托管气流,按小时计费,您不需要专用的 ec2。另一方面,步骤函数是 aws lambda,其执行时间限制为 15 分钟,这使得它们不是长时间运行管道的最佳候选者

© www.soinside.com 2019 - 2024. All rights reserved.