工作机制

-
Read阶段:MapTask通过RecordReader解析输入InputSplit中的key/value。
-
Map阶段:用户编写的map()函数处理key/value,生成新的key/value。
-
Collect阶段:map()函数处理完成后,调用OutputCollector.collect()输出结果,生成的key/value被分区并写入环形内存缓冲区。
-
Spill阶段:环形缓冲区满后,数据经过排序和可能的合并、压缩后写入本地磁盘的临时文件。此阶段包括:
- 利用快速排序算法对数据进行排序,先按分区编号Partition排序,再按key排序。
- 按分区编号将数据写入临时文件output/spillN.out。
- 将分区数据的元信息写入内存索引数据结构SpillRecord。
-
Merge阶段:所有数据处理完成后,MapTask将所有临时文件合并成一个大文件,保存到文件output/file.out中,并生成相应的索引文件output/file.out.index。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70024433/viewspace-2986834/
,如需转载,请注明出处,否则将追究法律责任。