我正在尝试了解map-reduce实际如何工作。请阅读我在下面写的内容,并告诉我这里是否缺少任何零件或不正确的东西。
谢谢。
首先将数据拆分为所谓的输入拆分(这是一种逻辑类型的组,我们将其大小定义为记录处理的需要)。
然后,每个输入拆分都有一个映射器,该映射器接受每个输入拆分并按键和值对其进行排序。
然后,是一个改组过程,该过程从映射器(键值)获取所有数据,并将所有相同的键与其值合并(输出所有键及其值列表)。改组过程的发生是为了为还原器提供每种键类型的1键及其求和值的输入。
然后,Reducer将所有键值合并到一个地方(可能是页面?),这是MapReduce流程的最终结果。
我们只需要确保定义Map(始终提供键值的输出)和Reduce(最终结果-获取输入键值,并且可以是count,sum,avg等)步骤代码。
最佳答案
您的理解特别是mapper的工作原理有些错误。
我用got a very nice pictorial image简单解释一下
它类似于wordcount
程序,其中
InputSplit
,由映射器处理。因此,我们有3个 bundle 包。 inputsplit
中,可能有多个records
,并且每个record
输入到一个mapper
中。 mapper
的每个word
(巧克力)的计数发生,并吐出计数。请注意,每个映射器仅处理一个line
(记录)。一旦完成,它将从record
中选择下一个inputsplit
。 (图像的第二阶段)map
阶段,就进行sorting
和shuffling
来制作巧克力计数相同的bucket
。 (图像的第三阶段)bucket
,其密钥为name of the chocolate
(或word
),并由列出计数。因此,在整个输入文件中,reduce的数量和不同词的数量一样多。 下图显示了
inputsplit
程序的一个wordcount
的工作方式:关于hadoop - map-reduce是如何工作的..我做对了吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49133269/