我在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集群应该使用哪种实例?
答案 0 :(得分:17)
一般来说,这取决于您的使用案例,需求等......但考虑到您共享的信息,我可以建议最低配置。
您似乎正在尝试在2~4 GB数据之间的矩阵上训练ALS
因子分解或SVD
。实际上,这并不是太多的数据。
您需要至少1个主节点和2个节点来设置和配置小型分布式群集。主人不会做任何计算,所以它不需要太多资源,但当然我会处理任务调度等。
您可以根据需要添加奴隶(实例)。
编辑:正如评论中所提到的,第5代实例现在可用于此线程中提到的每种实例类型:R5,M5和C5。通常,最新一代实例类型比旧版实例类型更便宜,性能更高。
C3,C4和C5是计算优化的实例,具有高性能处理器,与R3,R4或R5相比,EC2中的价格/计算性能最低,尽管它推荐使用的用例是分布式内存缓存和内存分析。但是C5会以更低的价格为你完成这项工作。
效果优化:
亚马逊EMR按小时递增收费。这意味着一旦您运行群集,您就需要支付整个小时的费用。这一点非常重要,因为如果您要支付整整一小时的Amazon EMR群集,那么几分钟内改善数据处理时间可能不值得您花费时间和精力。
不要忘记添加更多节点来提高性能要比花时间优化群集更便宜。
编辑:您还可以考虑启用Ganglia来监控您的群集资源:CPU,RAM,网络I / O.这有助于您调整EMR集群。实际上,您没有任何配置要做。只需按照documentation创建即可将其添加到EMR群集中。
答案 1 :(得分:2)
一般来说,首选实例取决于您正在运行的作业(是内存密集型的吗?是CPU密集型的吗?等等)但是Spark非常耗费内存,我不会使用低于30Gb的机器来处理大多数工作。
在您的特定情况下(4Gb数据集)我不确定您为什么要使用分布式计算开始 - 它只会让您的工作运行缓慢。如果您确定要使用X线程在本地模式下运行它(取决于您拥有多少个核心)