我什么时候使用Google的MapReduce

时间:2012-04-28 15:02:25

标签: python google-app-engine mapreduce

我最近偶然发现了Google的MapReduce

我已经阅读了两次描述/文档,但仍然无法理解它到底是什么,或者何时使用它。

非常感谢。

5 个答案:

答案 0 :(得分:4)

以下是map reduce的一个很好的解释:

http://www.joelonsoftware.com/items/2006/08/01.html

答案 1 :(得分:4)

Google App Engine为您提供了一个API(java和python),用于在其App Engine上运行MapReduce作业。虽然您无法查看所有源代码(调度程序,作业跟踪器,任务跟踪器等模块),但您可以查看API的源代码(包括映射器,缩减器,分区器等)。 GAE还为您提供了一个软件开发工具包(SDK),您可以在其上测试您的应用程序。在您对应用程序的性能感到满意后,您可以将其上传到GAE上,任何人都可以访问它。

我已经创建了一个这样的应用程序,它位于shaileshmapreduce.appspot.com。它不会让你运行MapReduce作业,因为我必须将你的gmail id添加到用户列表中,但你可以查看界面和所有内容。

您还可以试用他们的MapReduce演示https://developers.google.com/appengine/docs/python/dataprocessing/helloworld

当然,您需要确保在计算机上安装了SDK和所需的MapReduce库。

答案 2 :(得分:4)

简答:

当您希望数据并行时。

说明:

当你有一些需要多个CPU的繁重计算时,应该使用Map reduce框架。在map reduce中,首先将任务划分为独立的块。然后分别计算那些块。计算完所有块后,结果将合并为最终输出。一个常见的例子是机器学习。用于计算系数向量的许多计算可以单独执行,然后可以将结果聚集在一起。简而言之,如果你有不止一个CPU,那么只考虑使用map reduce,否则没有意义。

答案 3 :(得分:3)

请允许我引用Wikipedia

  

MapReduce是一个框架,用于使用大量计算机(节点)(统称为集群或网格)处理大型数据集中的高度可分发问题。对存储在文件系统(非结构化)或数据库(结构化)中的数据进行计算处理。

答案 4 :(得分:0)

这个问题已经得到了很好的回答,但我想补充一些东西。在我看来,问题的关键在于地图减少本身并不被理解。 Google map-reduce只是一种实现。还有Hadoop和各种各样的东西。这是map-reduce的helloworld:

假设您有一本书,并且您想计算每个单词的字数。这是实现目标的一种方式:

$('.galbt a').on('click', function(e) {
          var gallery = $(this).parent().find("p").text();
         $("#section").load("gallery.php?galeria="+gallery);//use key with $_GET and process.
      });      

这有点过分简化,因为标点符号而且是whatevs。

所以这段代码有效。如果你想通过使用闪亮的集群让它快速运行怎么办?将书的一部分发送给参与计算的每台计算机,让每一部分计算一些单词,然后将结果组合起来,真是太棒了。这是可能的,因为书中的每一行都与其他每一行无关。这就是map-reduce的用途:

如果你有一个算法需要在许多独立的对象上执行相同的操作,这样操作的结果不依赖于任何其他对象的结果,那么map-reduce是合适的。