微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

适用于工作流程的Airflow与AWS Step Functions

如何解决适用于工作流程的Airflow与AWS Step Functions

我正在一个项目中,该项目从AWS S3抓取一组输入数据,对其进行预处理和分割,旋转1万个批处理容器以在AWS Batch上并行处理分割后的数据,对数据进行后聚合,并将其推送到S3。

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

我没有使用Step Functions的经验,但是听说过AWS的Airflow。网上似乎有很多关于“步进功能+批处理”的模式。步骤功能似乎是检查用例的好方法吗?您对失败的工作/重试任务的能力是否与使用Airflow一样?

解决方法

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

  • Step Functions提供开箱即用的维护。它具有您的用例所需的高可用性和可伸缩性,对于Airflow,我们必须通过在服务器或容器(kubernetes)上自动缩放/负载平衡来做到这一点。
  • 气流和步进功能均具有用户友好的UI。虽然Airflow支持状态机的多种表示形式,但“步骤功能”仅将状态机显示为DAG。
  • Airflow的Rest API仍为experimental,而一系列产品级cli和SDK's支持AWS 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中失败的任务,但是在“步骤功能”中,您将必须创建custom implementation来处理该任务。您也可以在“步骤函数”定义中处理automated retries with back-offs
  • 对于“步骤功能”中的失败任务,单击时将获得可视化的故障状态表示和详细消息。您也可以使用aws cli或sdk来获取详细信息。
  • Step Function使用易于使用的JSON作为状态机定义,而Airflow使用Python脚本。
  • 步骤功能支持async callbacks,即状态机暂停直到外部源通知其恢复。尽管Airflow具有yet to add此功能。

总体而言,我看到了使用AWS Step Functions的更多优势。您将需要根据用例考虑两种服务的维护成本和开发成本。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。