2015-05-25 63 views
13

我在EMR Spark群集上运行一些机器学习算法。我很好奇使用哪种实例,以便获得最佳的性价比增益?Spark - AWS EMR群集首选哪种实例类型?

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

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

哪种情况下应在EMR星火群集中使用?

+0

这取决于你的用例,需求等...(相当意见的基础质量保证) – eliasah

+0

只是举个例子,如果我要训练ALS因子分解或SVD的数以百万计的参赛作品? – shihpeng

+0

你的数据是多大?以千兆字节为单位? – eliasah

回答

12

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

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

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

您可以根据需要添加从站(实例)。

1 x master : m3.xlarge - vCPU : 4 , RAM : 15 GB and 2 x 40 GB SSDs 
2 x slaves : c3.4xlarge - vCPU : 16, RAM : 30 GB and 2 x 160GB SSDs. 

C3和C4 计算优化情况下,它具有高性能处理器和与EC2最低价格/计算性能但建议使用情况相比,R3的分布式内存缓存和内存分析。但C4将以较低的价格为您完成这项工作。

性能优化:

  • 每小时的增量亚马逊EMR费用。这意味着一旦你运行一个集群,你就需要花费整整一个小时。这一点很重要,因为如果您要花费整整一个小时的Amazon EMR群集,以分钟为单位改善数据处理时间可能不值得花费您的时间和精力。

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

参考:Amazon EMR Best Practices - Parviz Deyhim

编辑:你也可以考虑让Ganglia监视群集资源:CPU,内存,网络I/O。这可以帮助您调整EMR群集。实际上,您没有任何配置要做。只需按照documentation在创建时将其添加到您的EMR群集。

2

一般来说首选实例取决于你正在运行的任务(是内存密集型?是CPU密集型?等等),但Spark是非常内存密集型,我不会少于30GB的大多数工作用机器。

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

+0

我同意你的观点,为什么我说最低限度的conf。 :) – eliasah

+0

最低配置是不使用电子病历 - 只是得到一个实例(即使是现货实例)下载电火花,并在本地模式下运行 –

+0

EMR的最低配置,问题是关于电子病历上的Spark我想。祝你今天愉快! – eliasah