MapTask
:map----->sort
map
:Mapper.map()中将输出的key-value
写出之前
sort
:Mapper.map()中将输出的key-value
写出之后
RecordReader
,从输入InputSplit
中解析出一个个key/value
。
map()
函数处理,并产生一系列新的key/value。
OutputCollector.collect()
输出结果。在该函数内部,它会将生成的key/value分区(调用Partitioner
),并写入一个内存缓冲区中,并且会被Partitioner
计算一个分区号,按照先后顺序分配index
下标
output/file.out
),同时生成相应的索引文件output/file.out.index
,这个文件分为若干分区,每个分区的数据已经按照key进行了排序,等待reduceTask
的shuffle线程来拷贝数据!