Google App Engine-MapReduce是我在云中大规模并行解决方案的最佳选择吗?

时间:2011-01-24 15:13:09

标签: google-app-engine parallel-processing

Google App Engine-MapReduce是云计算中大规模并行解决方案的最佳选择吗?我的问题在4核PC上需要数小时多线程。我说600分钟可能会这样做。我更喜欢1000台服务器在36秒内完成。在我的应用中,从4核心线程切换到1000服务器处理显然是可行的。事实上,我已经可以向4个内核发送1000个小型作业,但考虑到我仍然只有4个内核,它不会比4个大型作业更早完成4个内核。 (我的数据集很小,因此专为大型数据集设计的Map-Reduce可能与我的计算限制问题有不同的甜点。)

如果我同时拥有1000个网址,我认为我可以完成此操作,但您可能知道Google限制为10个请求。谷歌似乎正在积极劝阻局外人不要在他们的基础设施上安装大规模的并行解决方案。

我开始研究Google App Engine,因为在部署时用户很少,看起来App Engine的成本很高 - 我非常喜欢这个功能。我的印象是亚马逊EC2会更多的工作,但成本更可能是粗糙的。鉴于我是一家以家庭为基础的企业,我不想在最初几个月支付超过名义金额的任何东西,我不希望我的网站有很多访客。可能他们永远不会访问。

一般来说,人们在哪里寻求应该由云服务的大规模并行(计算限制)问题?

2 个答案:

答案 0 :(得分:2)

对于计算绑定任务,EC2通常优于App Engine。 App Engine专注于提供Web请求,而非纯数字运算。它的设计目的不是从本分钟的0个请求到下一分钟的1000个请求,而是在那之后返回0个请求。实际上,它的一个特性是您通常不需要显式控制一次运行的实例数。此外,长时间运行的作业是不可能的,但对于许多任务,您可以使用任务队列将作业链接在一起。我认为目前对后台任务的限制是10分钟。

EC2确实具有超级低级服务,您可以获得free。 EC2允许您明确地使服务器上下移动,但我认为您可以支付的最小增量是1小时。

当然,如果你想在1000台服务器上运行你的工作,app引擎和EC2都不会让你免费这样做。两者都具有很强的弹性/适应性,但是将1000台服务器连续工作30秒对他们来说并不是非常经济。在App Engine上,在运行1000个并发实例之前,您可能会遇到每小时或每日配额。在EC2上,您通常按服务器实例付费。因此,您需要支付1000小时的实例时间。当然,亚马逊的高CPU实例之一可能比你的PC强大得多,所以也许你只需要100左右。或者你可能会妥协并且一次只运行20个实例,这意味着完成计算需要几分钟,但你不会破产。

答案 1 :(得分:0)

你检查过亚马逊的Elastic MapReduce吗? http://aws.amazon.com/elasticmapreduce/

使用App Engine,您还应该调查任务队列。如果您已经知道如何将大问题拆分成许多小问题,那么您可以创建一个接收大问题的任务,然后创建1000(或10.000)个子任务来解决较小的问题。然后,如果需要,将结果收集到一个任务中。

单个任务在终止之前最多可以运行10分钟,这使得它们比常规请求更容易用于计算任务。