3. MapReduceTask工作流程
整理自Hadoop技术内幕
3.1 概述
MapReduce框架中,一个Task被分为Map和Reduce两个阶段,每个MapTask处理数据集合中的一个split并将产生的数据溢写入本地磁盘;而每个ReduceTask远程通过HTTP以pull的方式拉取相应的中间数据文件,经过合并计算后将结果写入HDFS。
3.2 MapTask
客户端提交任务,规划切片,并将切片文件,程序jar包与任务配置文件上传,Hadoop集群分配节点执行任务;
-
Read阶段:MapTask按InputFormat中定义的方法将数据读取如内存;
-
Map阶段:将内存中的数据按map()函数定义的方法处理成K-V对的形式;
-
Collect阶段:将K-V对的数据与索引向两个方向写入环形缓冲区(默认100M大小);
-
调用Partitioner.getPartition()获取记录的分区号,再将<key,value,partition>传给MapOutputBuffer.collect()做进一步处理;
-
MapOutputBuff
-