1 Map Task
Map Task整体计算流程,共分为5个阶段:
1)Read阶段:通过RecordReader将对应的InputSplit解析出一系列的key/value
2)Map阶段:将解析出的key/value依次交给用户编写的map()函数处理,并产生一系列新的key/value
3)Collect阶段:在map()中,当数据处理完成后,一般会调用OutputCollector.collect()输出结果。在该函数内部,它会生成key/value分片(通过调用Partition),并写入一个环形内存缓冲区
4)Spill阶段:当缓冲区满后,MapReduce会将数据写到本地磁盘上,生成一个临时文件。在数据写入本地磁盘之前,先要对数据进行一次本地排序,并在必要时对数据进行合并、压缩等操作。
5)Combine阶段:当所有数据处理完成后,Map Task对所有临时文件进行一次合并,确保最终只会生成一个数据文件。
Map Task计算流程
Map Task输出结果在内存和磁盘中的组织方式:涉及到Collect、Spill、Combine三个阶段
1) Collect
待map()函数处理完一对key/