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

时间:2015-05-25 09:55:45

标签: amazon-ec2 apache-spark emr

我在EMR Spark集群上运行一些机器学习算法。我很想知道使用哪种实例,这样我可以获得最佳的成本/性能增益?

对于相同的价格水平,我可以选择:

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

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

2 个答案:

答案 0 :(得分:17)

一般来说,这取决于您的使用案例,需求等......但考虑到您共享的信息,我可以建议最低配置。

您似乎正在尝试在2~4 GB数据之间的矩阵上训练ALS因子分解或SVD。实际上,这并不是太多的数据。

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

您可以根据需要添加奴隶(实例)。

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

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

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

  

效果优化:

     
      
  • 亚马逊EMR按小时递增收费。这意味着一旦您运行群集,您就需要支付整个小时的费用。这一点非常重要,因为如果您要支付整整一小时的Amazon EMR群集,那么几分钟内改善数据处理时间可能不值得您花费时间和精力。

  •   
  • 不要忘记添加更多节点来提高性能要比花时间优化群集更便宜。

  •   
     

参考:Amazon EMR Best Practices - Parviz Deyhim

编辑:您还可以考虑启用Ganglia来监控您的群集资源:CPU,RAM,网络I / O.这有助于您调整EMR集群。实际上,您没有任何配置要做。只需按照documentation创建即可将其添加到EMR群集中。

答案 1 :(得分:2)

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

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