地图减少如何工作..我说得对吗?

时间:2018-03-06 14:33:29

标签: hadoop mapreduce hdfs bigdata storage

我正在尝试了解map-reduce的实际工作方式。请阅读下面写的内容,并告诉我这里是否有任何遗漏的部分或不正确的内容。 谢谢。

首先将数据拆分为所谓的输入拆分(这是一种逻辑类型的组,我们将其大小定义为记录处理的需要)。 然后,每个输入拆分都有一个Mapper,它接受每个输入拆分并按键和值对其进行排序。 然后,有一个混洗过程,它从映射器中获取所有数据(键值),并将所有相同的键与其值合并(输出所有键及其值列表)。进行混洗过程以便为每个类型的密钥及其总和值提供1个密钥的输入。 然后,Reducer将所有键值合并到一个位置(页面可能是?),这是MapReduce过程的最终结果。 我们只需要确保定义Map(它总是给出键值输出)和Reduce(最终结果 - 得到输入键值,可以是count,sum,avg等等)步骤代码。

2 个答案:

答案 0 :(得分:0)

您的理解有点特别错误,特别是mapper的工作原理。 我got a very nice pictorial image用简单的术语解释

enter image description here

它类似于wordcount程序,其中

  • 每个巧克力包都是InputSplit,由映射器处理。所以我们有3个捆绑包。
  • 每个巧克力都是一个词。一个或多个单词(制作句子)是单个映射器的记录输入。因此,在一个inputsplit内,可能会有多个records,并且每个record都会输入到单个mapper
  • mapper计算每个word(巧克力)的出现次数并吐出计数。请注意,每个映射器仅处理一个line(记录)。完成后,它会从record中选择下一个inputsplit。 (图像中的第二阶段)

  • 完成map阶段后,sortingshuffling会产生bucket个相同的巧克力计数。 (图像中的第3阶段)

  • 一个缩减器获得一个bucket,其中密钥为name of the chocolate(或word)和列表计数。因此,整个输入文件中有尽可能多的reducer和许多不同的单词。
  • reducer迭代计数并将它们相加以产生最终计数并将其发出。

下图显示了inputsplitwordcount程序的单个{{1}}的工作原理:

enter image description here

答案 1 :(得分:0)

类似的质量保证 - Simple explanation of MapReduce?

另外,这篇文章解释了Hadoop - HDFS& Mapreduce以非常简单的方式https://content.pivotal.io/blog/demystifying-apache-hadoop-in-5-pictures