Spark - AWS EMR 集群首选哪种实例类型?

Spark - Which instance type is preferred for AWS EMR cluster?

我是运行 EMR Spark 集群上的一些机器学习算法。我很好奇要使用哪种实例才能获得最佳 cost/performance 增益?

同等价位,我可以选择:

          vCPU  ECU  Memory(GiB)
m3.xlarge  4     13     15     
c4.xlarge  4     16      7.5
r3.xlarge  4     13     30.5

EMR Spark集群应该使用哪种实例?

一般来说,这取决于您的用例、需求等...但我可以根据您分享的信息建议最低配置。

您似乎正试图在 2 ~ 4 GB 数据的矩阵上训练 ALS 因式分解或 SVD。所以实际上这不是太多的数据。

您将需要至少 1 个主节点和 2 个节点来设置和配置小型分布式集群。 master 不会做任何计算,所以它不需要太多资源,但我当然会处理任务调度等。

您可以根据需要添加slave(实例)

  • 1 x master:m3.xlarge m5.xlarge - vCPU:4,RAM:16 GB,带 EBS存储。
  • 2 个从站:c3.4xlarge c5.xlarge - vCPU:16,RAM:32 GB,带 EBS 存储。

编辑: 如评论中所述,第 5 代实例现在可用于此线程中提到的每种实例类型:R5、M5 和 C5。一般来说,最新一代实例类型比旧实例类型更便宜、性能更高。

C3、C4 和 C5 是 计算优化 实例,具有高性能处理器,与 R3、R4 或 R5 相比,EC2 中的 price/compute 性能最低,尽管它是推荐的用例是分布式内存缓存和内存分析。但 C5 会以更低的价格为您完成这项工作。

Performance Optimizations :

  • Amazon EMR charges on hourly increments. This means once you run a cluster, you are paying for the entire hour. That's important to remember because if you are paying for a full hour of Amazon EMR cluster, improving your data processing time by matter of minutes may not be worth your time and effort.

  • Don't forget that adding more nodes to increase performance is cheaper than spending time optimizing your cluster.

Reference : Amazon EMR Best Practices - Parviz Deyhim.

编辑: 您还可以考虑启用 Ganglia to monitor your cluster resources: CPU, RAM, Network I/O. This would help you also tuning your EMR cluster. Practically, you don't have any configuration to do. Just follow the documentation 以在创建时将其添加到您的 EMR 集群。

一般来说,首选实例取决于您 运行 的工作(它是内存密集型的吗?它是 CPU 密集型的吗?等等)但是 Spark 是非常内存密集型的,我不会大多数工作不要使用小于 30Gb 的机器。

在你的特定情况下(4Gb 数据集)我不确定你为什么要开始使用分布式计算 - 它只会让你的工作 运行 变慢。如果你确定你想要 spark 运行 它在具有 X 线程的本地模式下(取决于你有多少个内核)