考虑MapReduce程序的WordCount问题。在MapReduce中首先发生合并或合并器首先发生
让我们考虑映射输出如下: 你好1 世界1 你好1 Hadoop的1 你好1 Hadoop的1
它道出分区(我们2指定为没有减速,) 现在mapoutput 2份 第一部分获得分区:
你好1
你好1
你好1
第2部分: 世界1 Hadoop的1 Hadoop的1
因为在减速机: 我们得到输入作为 你好[1,1,1]
世界[1]
的Hadoop [1 ,1]
请澄清我的价值合并发生时的理解。 要的MapReduce: K1,V1 - >(映射器O/P)K2,V2 - >(排序和随机播放)K3,[V3] - >(减速机O/P)K4,V4
我的查询是当这种价值合并发生时,在组合器执行之前或组合器执行之后(在分类和洗牌过程中)。或者在Reducer级别输入Reducer之前发生值合并。
由于根据我的理解: 映射器输出首先进入内存,当它跨越mapreduce.task.io.sort.mb的阈值时,它溢出到本地磁盘,但在溢出数据按分区排序之前,以及在每个分区内,它在排序组合器被调用以减小大小之后通过键排序。 Mapper完成后,溢出文件将被合并,组合器将根据min.num.spills.for.combine值进行调用。
因为在字数问题中,减速器会为每个特定键进行所有迭代值的累加,并写出输出键和值的总和。由于Combiner是迷你型减速器,我们为组合器指定了相同的减速器类 Job.setCombinerClass(Reduce.class);
然后在排序和洗牌过程中合并有价值之前,可以调用Combiner,或者我的理解不正确。 请说明我