【问题标题】:AWS data pipeline VS lambda for EMR automation用于 EMR 自动化的 AWS 数据管道 VS lambda
【发布时间】:2018-01-19 16:14:10
【问题描述】:

这是我在 AWS 中的应用程序的步骤。

  1. 数据将每周加载到单独的 35 个S3 文件夹中。
  2. 在每 35 个文件夹中完成数据加载后,将创建 35 个 EMR 集群。
  3. 每个 EMR 集群都有 spark-scala 脚本来并行运行。
  4. 作业完成后,所有集群都将终止。

我怎样才能做到这一点?

据我搜索,有两个选项。

  1. 在 S3 事件和 lambda 上调用 AWS lambda 函数将创建 EMR 集群并执行 spark-submit。
  2. 我了解了 AWS 数据管道。

AWS Data pipeline 对我的方案有帮助吗?

我还有运行 zeppelin 的 spark-scala 脚本。 如果需要,我可以创建 jar 并在数据管道中提交。

还请考虑成本。我每周有 5TB 的数据要交付给客户。

【问题讨论】:

    标签: amazon-web-services amazon-s3 lambda amazon-data-pipeline


    【解决方案1】:

    我认为您应该使用数据管道。管道将负责创建 EMR、提交作业并在处理完成后关闭 EMR。您可以在“活动”部分指定 EMR 的步骤。 “资源”部分可以指定 EMR 集群的参数(如要使用的实例类型/角色等)

    您甚至可以配置警报 - 如果管道由于某种原因失败,则通过 SNS 向您发送电子邮件。

    现在进入关于如何触发管道的部分。如果数据在预定时间进入,您可以考虑在管道中使用“计划”。然后,管道将在每天/每周/每月的指定时间激活。

    【讨论】:

    • 是的,数据会定期来。我们也可以并行调用 10 个 emr 集群。但是它比 lambda 调用 EMR 更好吗?
    • 好吧,两者都可以为所欲为。区别主要在于设置它们的容易程度。使用 Pipelines,一切都是基于 GUI 的,因此您可以挑选并选择创建您的管道。使用 Lambda,您将需要 Python 专业知识来编写流程以及错误处理以使用 boto3 框架创建 EMR。与 Lambda 相比,管道中内置了许多功能。示例 - 对于使用 lambda 的定期执行,您需要在 cloudwatch 事件中创建单独的触发器。在 Pipeline 中,计划是内置的。
    • 太好了,所以我可以在 UI 中创建一次管道并在每次我们想要的时候使用它?一旦 EMR 作业完成,管道将被终止?
    • 不,一旦 EMR 作业完成,EMR 就会关闭。但是,管道仍然活跃。如果安排好,它将在上述时间自动触发 EMR。一旦创建了管道并且工作正常,您就不需要再摆弄它了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-27
    • 1970-01-01
    • 1970-01-01
    • 2020-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多