我正在尝试了解map-reduce实际如何工作。请阅读我在下面写的内容,并告诉我这里是否缺少任何零件或不正确的东西。
谢谢。

首先将数据拆分为所谓的输入拆分(这是一种逻辑类型的组,我们将其大小定义为记录处理的需要)。
然后,每个输入拆分都有一个映射器,该映射器接受每个输入拆分并按键和值对其进行排序。
然后,是一个改组过程,该过程从映射器(键值)获取所有数据,并将所有相同的键与其值合并(输出所有键及其值列表)。改组过程的发生是为了为还原器提供每种键类型的1键及其求和值的输入。
然后,Reducer将所有键值合并到一个地方(可能是页面?),这是MapReduce流程的最终结果。
我们只需要确保定义Map(始终提供键值的输出)和Reduce(最终结果-获取输入键值,并且可以是count,sum,avg等)步骤代码。

最佳答案

您的理解特别是mapper的工作原理有些错误。
我用got a very nice pictorial image简单解释一下

hadoop - map-reduce是如何工作的..我做对了吗?-LMLPHP

它类似于wordcount程序,其中

  • 每束巧克力都是InputSplit,由映射器处理。因此,我们有3个 bundle 包。
  • 每个巧克力都是一个字。一个或多个单词(构成一个句子)是单个映射器的记录输入。因此,在一个inputsplit中,可能有多个records,并且每个record输入到一个mapper中。
  • mapper的每个word(巧克力)的计数发生,并吐出计数。请注意,每个映射器仅处理一个line(记录)。一旦完成,它将从record中选择下一个inputsplit。 (图像的第二阶段)
  • 一旦完成map阶段,就进行sortingshuffling来制作巧克力计数相同的bucket。 (图像的第三阶段)
  • 一个reducer可以得到一个bucket,其密钥为name of the chocolate(或word),并由列出计数。因此,在整个输入文件中,reduce的数量和不同词的数量一样多。
  • 归约器迭代计数并求和,以得出最终计数并将其针对单词发出。

  • 下图显示了inputsplit程序的一个wordcount的工作方式:

    hadoop - map-reduce是如何工作的..我做对了吗?-LMLPHP

    关于hadoop - map-reduce是如何工作的..我做对了吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49133269/

    10-16 21:27