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