【问题标题】:When do I use Google's MapReduce我什么时候使用 Google 的 MapReduce
【发布时间】:2012-05-09 00:45:27
【问题描述】:

我最近偶然发现了 Google 的 MapReduce

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

非常感谢。

【问题讨论】:

  • 当您需要处理大量数据时。问一个模糊的问题,得到一个模糊的答案。
  • 您想知道如何使用 Google 的 MapReduce 或 MapReduce 本身吗??
  • @daemonfire300 那么我的回答可能对你有帮助吗?

标签: python google-app-engine mapreduce


【解决方案1】:

请允许我引用Wikipedia

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      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 库。

      【讨论】:

        【解决方案4】:

        简答:

        当您希望拥有数据并行性时。

        解释:

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

        【讨论】:

          【解决方案5】:

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

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

          word_dict = {}
          for line in book_file_handler:
               for word in line.split():
                   word_dict[word] = word_dict.get(word,0)+1
          

          这有点过于简化了,因为标点符号什么的。

          所以这段代码有效。如果你想通过使用闪亮的集群让它运行得非常快怎么办?最好将书中的一部分发送到参与计算的每台计算机,让每台计算机计算一些单词,然后组合结果。这是可能的,因为书中的每一行都独立于其他每一行。这就是 map-reduce 的用途:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-09-07
            • 2011-06-12
            • 2011-01-03
            • 2020-12-07
            • 2010-09-21
            • 1970-01-01
            相关资源
            最近更新 更多