Hadoop系列 mapreduce 原理分析

以wordcount 为例

https://blog.****.net/weixin_43291055/article/details/106488839

步骤一:split

Hadoop系列 mapreduce 原理分析

步骤二:map阶段

Hadoop系列 mapreduce 原理分析

步骤三:combine阶段(可选)---将同一台机器上的相同的数据进行合并,减少网络传输

combiner其实也是一种reduce操作,因此我们看见WordCount类里是用reduce进行加载的。Combiner是一个本地化的reduce操作,它是map运算的后续操作,主要是在map计算出中间文件前做一个简单的合并重复key值的操作,例如我们对文件里的单词频率做统计,map计算时候如果碰到一个hadoop的单词就会记录为1,但是这篇文章里hadoop可能会出现n多次,那么map输出文件冗余就会很多,因此在reduce计算前对相同的key做一个合并操作,那么文件会变小,这样就提高了宽带的传输效率,毕竟hadoop计算力宽带资源往往是计算的瓶颈也是最为宝贵的资源,但是combiner操作是有风险的,使用它的原则是combiner的输入不会影响到reduce计算的最终输入,例如:如果计算只是求总数,最大值,最小值可以使用combiner,但是做平均值计算使用combiner的话,最终的reduce计算结果就会出错。

平均值不能用combine的原因:不能直接使用reduce

平均值的计算:https://blog.****.net/yapuge/article/details/24373063

Hadoop系列 mapreduce 原理分析

步骤四:shuffle阶段

https://www.jianshu.com/p/c2a5468f0c5c

步骤五:reduce

Hadoop系列 mapreduce 原理分析

参考:

https://www.jianshu.com/p/c2a5468f0c5c

https://blog.****.net/shujuelin/article/details/79119214