【问题标题】:Apache Spark AWS Glue job versus Spark on Hadoop cluster for transferring data between bucketsApache Spark AWS Glue 作业与 Spark on Hadoop 集群在存储桶之间传输数据
【发布时间】:2023-01-26 04:50:08
【问题描述】:

假设我需要以 ETL 的方式在两个 S3 存储桶之间传输数据,并在传输过程中对数据进行简单的转换(只取部分列并按 ID 过滤)。 数据是镶木地板文件,其大小在 1GB 到 100GB 之间变化。

在速度和成本方面应该更有效 - 使用 Apache Spark Glue 作业,或使用 X 机器在 Hadoop 集群上使用 Spark?

【问题讨论】:

    标签: apache-spark amazon-s3 aws-glue


    【解决方案1】:

    对于任何无服务器(Glue)/非无服务器(EMR)服务等价物,答案基本相同。

    第一个应该设置起来更快,但可配置性较差并且可能更昂贵。第二个将为您提供更多优化选项(性能和成本),但您不应忘记包括自己管理服务的成本。如果您需要预先估算价格,可以使用 AWS 定价计算器。

    如果出现问题,我肯定会从 Glue 开始,然后转向更复杂的东西。另外,不要忘记现在也可以使用无服务器 EMR。

    【讨论】:

    • 我问的是 Hadoop 集群上的 Glue 和 Spark 的区别,不是 EMR。我问是因为我想知道这在理论上是否重要。毕竟,Spark on Hadoop 和 Glue ETL 都使用 EC2。我的用例简单明了——我只需要按某个值过滤行并只取一部分列。
    • 就像你说的,这应该无关紧要,因为底层计算是相同的。使用等效的 Glue DPU 或工作节点选择,您应该获得相同的速度。
    【解决方案2】:

    在确定是否值得从 AWS Glue 切换到 AWS EMR 时,我读到了这个问题。

    借助 EMR 上的可配置 EC2 SPOT 实例,我们大大减少了之前读取 1GB-4TB 的 csv 未压缩 csv 数据的 Glue 作业。我们能够使用 spot 实例来利用更大更快的 Graviton 处理器 EC2,这些 EC2 可以将更多数据加载到 RAM 中,减少溢出到磁盘。另一个好处是摆脱了动态框架,这在您不知道模式时非常有用,但是我们不需要的开销。此外,比 AWS Glue 提供的实例更大的 Spot 实例减少了我们的运行时间,但不会太多。更重要的是,我们将成本降低了 40-75%,是的,即使每个 EC2 实例的 EC2 + EBS + EMR 开销成本也是如此。我们从 Glue 每天 25-250 美元变成了 EMR 每天 2-60 美元。此过程的每月成本在 AWS Glue 中为 1600 美元,现在低于 500 美元。我们将 EMR 作为 job_flow_run 运行,并在空闲时终止运行,因此它本质上就像 Glue serverless 一样。

    我们没有选择 EMR Serverless,因为没有 spot 实例,这可能是最大的好处。

    唯一的问题是我们没有早点切换。我们现在正在将所有 AWS Glue 作业转移到 AWS EMR。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-13
      • 2019-03-28
      相关资源
      最近更新 更多