1、框架会把输入文件(夹)划分为很多InputSplit,默认每个HDFS的Block对应一个InputSplit。通过RecordReader类,会把每一个InputSplit解析成一个个<k1,v1>。默认每一行数据会被解析成一个<k1,v1>
2、框架调用Mapper类的map(...)函数,map函数的输入是<k1,v1>,输出是<k2,v2>,一个InputSplit对应一个Map Task
3、框架调用map函数输出的<k2,v2>进行分区。不同分区中的<k2,v2>由不同的Reduce Task处理,默认只有一个分区
4、框架对每个分区中的数据,按照k2进行排序和分组。分组是指相同的k2和v2分成一组
5、在Map阶段,框架可以执行Combiner操作