【问题标题】:Scale for Elastic MapReduce (EMR)?弹性 MapReduce (EMR) 的规模?
【发布时间】:2013-06-03 07:26:52
【问题描述】:
我正在评估 EC2/EMR 以运行约 20 个节点的 Hadoop 集群。 (custom JAR 集群)。我在单节点 3.3 GHz 2GB RAM 本地 VMWare 实例上运行了简单的 WordCount 示例,完成时间不到 10 秒。 WordCount 示例需要 3 分钟才能在 EMR 上完成,其中包含 2 个c1.mediumm 实例(不包括 3-5 分钟的启动时间)。 2 m1.small 实例花费相同的时间。在 EMR 上运行作业会有一些开销,而且可能这个问题规模太小,所以这似乎可以理解。
您在多大程度上开始看到云的性能优势?或者大约有多少个节点或计算单元?
【问题讨论】:
标签:
hadoop
amazon-ec2
cloud
emr
【解决方案1】:
如果您正在启动 EMR 作业,这实质上意味着您要求 Amazon 为您提供一个由 N 台机器组成的按需集群,而配置和提供这些机器的简单事实可能需要几分钟时间,更不用说这些机器需要设置,可以有引导操作,等等。我很少看到 EMR 作业(即使是大型作业)需要超过 10 分钟才能准备好集群,但我也很少看到集群在不到几分钟的时间内启动。
如果您有一项经常运行(例如每小时)的作业,那么设置和关闭 EMR 集群的成本可能会太大,在这种情况下,最好创建您的在 EC2 上有一些保留实例的集群。使用预留实例,您将始终拥有自己的集群并由您管理,因此不会浪费时间设置/关闭集群,这就像一个常规的 Hadoop 集群。
过去几年我一直在做的是在保留实例上使用 EC2 集群,该集群始终处于启动状态并且所有作业都在其上运行,但对于一些非常大且无法容纳的作业我的集群,我在 EMR 上运行它们,我可以在其中选择我想要的节点数量,并且由于这些是大型作业,与总运行时间相比,设置/关闭集群的时间很小。我不建议将 EMR 用于小型/频繁的工作。