【问题标题】:AWS Managed Airflow vs. AWS Lambda + Step Functions vs. Kubeflow on AWS EKSAWS Managed Airflow 与 AWS Lambda + Step Functions 与 AWS EKS 上的 Kubeflow
【发布时间】:2021-09-07 08:49:19
【问题描述】:

这将是一个相当普遍的问题。我有一个我想实时执行的管道。管道可能会发生突然且不可预测的负载变化,因此可伸缩性(向上和向下)很重要。管道阶段可以打包为 docker 容器,尽管它们不一定以这种方式开始。

我看到了在 AWS 上构建上述管道的三种方法。 1) 我可以编写一个 Airflow DAG 并将 AWS 托管工作流用于 Apache 气流。 2) 我可以使用 AWS 步进函数编写 AWS lambda 管道。 3) 我可以在 AWS EKS 之上编写一个 Kubeflow 管道。

我想这三个选项在成本和可扩展性方面有不同的影响。例如。假设我没有达到 Lambda 的服务配额,在 AWS EKS 中扩展 Kubernetes 集群将比扩展 Lambda 函数慢很多。有人可以评论 AWS 托管 Airflow 的可扩展性吗?它的扩展速度是否比 EKS 快?它与 AWS Lambda 相比如何?

【问题讨论】:

    标签: amazon-web-services aws-lambda airflow amazon-eks kubeflow-pipelines


    【解决方案1】:

    为什么不使用 Airflow 来编排整个管道? Airflow 可以使用 StepFunctionStartExecutionOperator 或通过编写自定义 Python 函数对 PythonOperator 执行相同操作来调用 Step Function。

    似乎此解决方案将是两全其美的解决方案:Airflow 中的真正数据编排、监控和警报(同时保持相当轻量级的 Airflow 实例,因为它是纯编排)以及 AWS Lambda 中的可扩展性和响应能力。

    我过去曾在一个非常相似的用例中使用过这种方法,而且效果非常好。此外,如果您将来需要扩展此管道以与其他服务和系统集成,Airflow 可为您提供这种灵活性,因为它是一个编排器,并且与系统和提供商无关。

    【讨论】:

    • 如果我要在气流节点内调用步进函数,我为什么不直接使用步进函数来编排整个事情呢?为什么要增加编排层?
    • 既然这是一个普遍的问题,我会说经典的答案:“这取决于。”如果这个管道不仅仅是执行 Lambda 函数,那么 Airflow 将提供与无数其他系统和提供商的集成。以及在一个地方进行管道监控和警报。您可以使用DocerOperator 甚至链 Step Functions、Lamdas 等来运行 Docker 容器,而无需在服务本身中处理这些依赖关系。
    • 如果管道永远不会超过 Lamdas,好像你回答了你自己的问题 :)
    • 我对可扩展性更好奇。特别是,这种规模扩大的速度有多快。我对 Step Functions 有点熟悉,它甚至在底层 Lambda 基础设施之上也施加了扩展限制。 Airflow 的可扩展性是否仅限于底层执行器?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-22
    相关资源
    最近更新 更多