在企业实习的过程中,有学习到hadoop,师傅也需要我们讲解mapreduce过程原理。我就把我的理解分享以下。
MR(分布式计算模型)分为2个部分Map,Reduce。

1. Map 过程。
1.1 从HDFS读取数据,默认一行产生一对<k,v>.
1.2 每次接受到一对<k,v>,调用一次map()方法进行计算,产生新的一对<k,v>,调用prattioner(),计算key的hash值然后根据reduce task数量取模计算,最后将<k,v> 及parttion值放置缓冲区中。.
1.3 在对缓冲区数据进行排序后,如果client设置了combine,进行combine(相当如mapper端的reduce)
1.4 当缓冲区数据达到80%时,启动spilt(溢写)。将数据刷入至硬盘当中。产生一个溢写文件。在溢写时,会对内容进行排序(对序列化的字节做的排序,根据不同的<k,v>发送到不同端的reduce,减少parttion索引记录)
(之所以设置80%默认,方便将数据刷入硬盘的时候,任然可以接受map产生的结果)
(分区->排序->combine)
1.5 当数据量很大的时候,会产生多个溢写文件,在map task完成时,会进行merge,合并为一个文件。
2.reduce过程
2.1 merge阶段,类似map阶段的merge,将来自不同map端的数据进行整合。copy过来的数值首先放到内存缓冲区中。merge主要方式为从内存到磁盘,与map的溢写类似,如果在此过程中设置了combiner,也是会启用的。产生众多的溢写文件。直到map端没有数据结束。然后进行磁盘到磁盘的merge方式生成最终的文件。
2.2最终文件成为combine的输入文件,进行reduce运算。产生结果
2.3.将产生的结果输出到HDFS上。
推荐
https://www.cnblogs.com/sharpxiajun/p/3151395.html#commentform