Hadoop 理解MapReduce示例

Hadoop 理解MapReduce示例,hadoop,mapreduce,word-count,Hadoop,Mapreduce,Word Count,我是MapReduce的初学者,目前正在阅读Jimmy Lin和Chris Dyer的《使用MapReduce进行数据密集型文本处理》一书() 无论如何,这本书提供的第一个例子是字数计算算法,我很难理解为什么减速机的最终输出是这样的。示例见文本第23页,图2.2。据我所知,X应该是6,Y应该是9,Z应该是19 我想你是糊涂了。图2.2不是字数计算算法的示例。它显示了“映射器和还原器”一节中描述的映射还原框架的两级处理。图2.2显示了Map Reduce的简化视图。作者想用这个图展示Map如何减少

我是MapReduce的初学者,目前正在阅读Jimmy Lin和Chris Dyer的《使用MapReduce进行数据密集型文本处理》一书()

无论如何,这本书提供的第一个例子是字数计算算法,我很难理解为什么减速机的最终输出是这样的。示例见文本第23页,图2.2。据我所知,X应该是6,Y应该是9,Z应该是19


我想你是糊涂了。图2.2不是字数计算算法的示例。它显示了“映射器和还原器”一节中描述的映射还原框架的两级处理。图2.2显示了Map Reduce的简化视图。作者想用这个图展示Map如何减少框架词,并展示如何找到与键相关的所有值的最大值。即y输出为x=5(最大值为1,5),以此类推

如果您想通过map reduce读取字数算法,请查看:

类映射器 2:方法图(文档ID a;文档d) 3:对于所有条款t 2文件d do 4:发射(项t;计数1) 1级减速器 2:方法减少(项t;计数[c1;c2;:]) 3:和0 4:对于所有计数c2计数[c1;c2;:]do 5:和+c 6:发射(项t;计数和) 图2.3:MapReduce中单词计数算法的伪代码。地图绘制者发出一种声音 文档中每个单词的中间键值对。减速机将所有计数相加 每一个字

可能会出现混淆,因为图片先粘贴,其编号粘贴在图片底部


希望这有帮助

输入到映射器的输入文件如下所示: 记录1:a,1 记录2:b,2 建议3:c,3 建议4:c,6 记录5:a,5 记录6:c,2 建议7;b、 七, 记录8:c,8

记录#1和#2&将由映射器#1处理。在此示例中,假设上述文件存储在4个块中。第一区的1号区和2号区(&)。第二街区的3号区和4号区(&)。Rec#5和Rec#6(&)将位于第三街区。Rec 7和Rec8将存储在第4块Rec7和Rec8()

在Map Reduce框架中,将为每个输入分割调用一个映射器(逻辑上与块相同)。每个映射程序将处理输入拆分中的所有记录

M1将接受(&)的输入,并发出a作为键,1作为值,发出b作为键,1作为值。对于M2,输入是c,3和c,6和,它发出键为c,值为3,键为c,值为6,依此类推

然后reducer将接受这些键并执行其处理

希望这能澄清你的问题。

后面的一段:

最终输出写入分布式文件系统,即 每个减速机的文件数。每个文件中的单词将被排序 按字母顺序排列,每个文件将大致包含 字数相同。分割者,我们稍后讨论 在第2.4节中,控制将单词分配给减缩器。 输出可由程序员检查或用作输入 到另一个MapReduce程序


据我所知,示例中的每个Reducer都将其输出写入不同的文件。我同意应该在一些评论中指定的图之前解释这一点。

你是对的,但是你应该尝试联系作者,或者甚至向其GitHub页面提交一个pull请求,因为这是作者使用的。同时,这篇评论并不适合发布到堆栈溢出。如果我对Hadoop的MapReduce有任何进一步的问题,我应该发布到哪里?如果你对Hadoop或MapReduce有问题,在这里发布是个好主意,但是你的问题,至少对我来说,看起来更像是那本书的错误报告。我无意让这个问题成为错误报告,但更多的是澄清问题。我是MapReduce新手,所以我认为我没有完全理解这个示例。无论如何,谢谢。对于更快、更少技术性的问题,比如“我理解得对吗?”我也可以推荐去IRC:#freenode上的hadoop。很多人经常在那里闲逛,你通常可以立即得到回复。那么图2.2和2.3是无关的吗?图2.2并没有试图从所有文档中找出每个单词的最大值?但仅仅是输入减速机的每个列表的最大值?为什么映射器会输出c,(c,3)和(c,6)的两个计数?映射的输入是键,值,其输出也是键,值对。在本例中,图2.2显示了映射程序读取了两个输入键值对,并为C发出了两个键值对。首先是{C,3}&{C,6}在这个映射阶段之后,然后是short和SHUNFLE,用于聚集键的值。因为一个键的记录会进入同一个reducer,所以只有一个reducer有一个键和它的值{key,}。所以这只是为了显示映射器正在为键C发出两个键值对,它们在一个减缩器中聚合。回答是2.2与单词计数算法无关。图2.2显示了a、b和c的最大计数。图中仅显示了三个减速器。在Map Reduce中,所有映射器发出的一个键的记录与R1{a,}的还原器相同。R2{b,},R3{c}。作者展示了3个不同的减缩器,但实际上我们可以控制减缩器的数量,如果我们愿意,我们可以将减缩器的数量设置为1,在这种情况下,所有映射器的输出将只发送到一个减缩器。我仍然不太明白为什么在第二个映射器中有两个单独的c计数。是因为它接收到两个单独的输入,并且必须输出至少两个单独的计数吗?或者是任意的?输入到mapper的输入文件如下所示: