我试图理解map-reduce实际上是如何工作的。请阅读我在下面写的内容,并告诉我这里是否有任何遗漏的部分或不正确的东西。谢谢。
首先将数据拆分为所谓的输入拆分(这是一种逻辑类型的组,我们将其大小定义为记录处理的需要)。然后,每个输入拆分都有一个Mapper,它接受每个输入拆分并按键和值对其进行排序。然后,有一个混洗过程,它从映射器中获取所有数据(键值),并将所有相同的键与其值合并(输出所有键及其值列表)。进行混洗过程以便为每个类型的密钥及其总和值提供1个密钥的输入。然后,Reducer将所有键值合并到一个位置(页面可能是?),这是MapReduce过程的最终结果。我们只需要确保定义Map(它总是给出键值的输出)和Reduce(最终结果 - 得到输入键值,可以是count,sum,avg等等)步骤代码。
你的理解有点特别错误,特别是mapper的工作原理。我got a very nice pictorial image用简单的术语来解释
它类似于wordcount
程序,其中
InputSplit
,由一个映射器处理。所以我们有3个捆绑。inputsplit
内,可能有多个records
,每个record
输入到单个mapper
。mapper
计算每个word
(巧克力)的发生和吐计数。请注意,每个映射器只能处理一个line
(记录)。一旦完成,它会从record
中挑选下一个inputsplit
。 (图像的第2阶段)map
阶段结束,sorting
和shuffling
将制作一个相同巧克力计数的bucket
。 (图像中的第3阶段)bucket
与密钥作为name of the chocolate
(或word
)和一个计数列表。因此,整个输入文件中有尽可能多的reducer和许多不同的单词。下图显示了inputsplit
程序的单个wordcount
如何工作:
类似的QA - Simple explanation of MapReduce?
此外,这篇文章以非常简单的方式解释Hadoop - HDFS和Mapreduce qazxsw poi