最开始你以为的MapReduce
这个仅仅是我们最开始的了解,从数据拿进来,Map分,shuffle阶段处理一下,给Reduce在合并输出,写入磁盘,搞定。
在学习了MapReduce之后的你的MR
MapTask收集我们的map()方法输出的kv对,放到内存缓冲区中
从内存缓冲区不断溢出本地磁盘文件,可能会溢出多个文件
多个溢出文件会被合并成大的溢出文件
在溢出过程及合并的过程中,都要调用Partitioner进行分区和针对key进行排序
ReduceTask根据自己的分区号,去各个MapTask机器上取相应的结果分区数据
ReduceTask会抓取到同一个分区的来自不同MapTask的结果文件,ReduceTask会将这些文件再进行合并(归并排序)
合并成大文件后,Shuffle的过程也就结束了,后面进入ReduceTask的逻辑运算过程(从文件中取出一个一个的键值对Group,调用用户自定义的reduce()方法)
最后让你说你的MR其实,总结一下,貌似还是
This article is bland, but not simple. Come on !