mr编程模型

分为三个阶段:mapshufflereducer
map阶段:分片----运行mapper之前,FileInputFormat将文件切割成每片128m
            执行(Map)----对输入分片的每个键值对进行map()函数运算,输出新的键值对
            分区----对map()的输出进行分区,默认根据hash方式进行分区(避免数据倾斜)
            溢写----map端输出写入环形缓冲区,达到80%之后,启动溢写线程,将缓冲数据写入磁盘
                        在溢写到磁盘之前,对每一个分区中的key进行排序
                        如果设置了combiner,会在sort之后对相同key进行聚合,减少溢写到磁盘的数据量
            合并(merge)----溢写可能会生成多个文件,将多个文件进行合并,期间不断进行排序,最后生成一个已分区已排序的文件shuffle阶段:分为两个阶段:
                                             copy:reduce端启动线程,通过http方式,将属于自己的文件拉取过来
                                             merge:copy过来的数据会不断写入环形缓冲区,达到阈值后,溢写到磁盘。如果生成多个文件,就会被merge成一个有序的最终文件

reduce阶段:获取shuffle阶段最终生成的有序文件作为reduce的输入,对该文件的每一个键值调用reduce()方法,经结果输出到hdfs

你可能感兴趣的:(大数据,hadoop)