MapTask阶段:总共分为以下5个步骤:
1.read阶段:当客户端提交job的时候,根据附加的三个信息(切片信息和jar包以及xml文件)去开启相应数量MapTask读取文件
2.map阶段:系统默认的map方式是TextInputFormat,通过读取行来切割数据,以便后序数据处理。
3.collect阶段:当map阶段结束后,将切割完成的数据输送到环形缓冲区并分区排序,系统默认按照key排序,按字典顺序排序,排序方式是快排(快速排序)。
4.溢写阶段:就是当环形缓冲区数据达到其大小的**80%**时(默认大小为100M),将数据写入磁盘。
5.combiner阶段:意为数据归并,即将数据进行一定的归并操作。可有可无。在适当时候使用combiner,可以减少网络传输数据量,优化Hadoop框架性能。
“ReduceTask阶段”可以分解为以下4个阶段:
1.Coyp阶段:通过远程数据拷贝方式,从MapTask中拷贝已处理好的数据到内存。注意:(MapTask和ReduceTask很大程度不再同一台服务器,这就是为什么需要序列化和反序列化(bean对象))。
2.Meger阶段:即合并阶段。当拷贝过来的多个小文件合并成一个大的文件。当达到内存数据量的阈值(内存大小)时,自动会将数据写入磁盘。
3.sort阶段:就是按照某种需求比如分组排序,与meger阶段同时进行。
4.reduce阶段:将数据写入到指定的分区文件中。
以上就是MapTask和Reduce阶段的详细过程。谢谢观看