1、MapReduce工作流程
(1)、客户端执行submit()方法之前,会先获取待读取文件的信息;
(2)、将文件切片信息,jar包,job.xml 提交到yarn;
(3)、yarn根据job.xml ,启动切片数量相应的MapTask;
(4)、MapTask 调用inputFormat()方法读取HDFS文件,InputFormat()方法调用RecordRead()方法,默认TextInputFormat将数据以行首字母的偏移量为key,一行数据为value,传到map()方法;
(5)、map()方法做一些业务处理之后,将数据传输到分区方法中,将数据进行分区标注后,发送到环形缓冲区中。
(6)、环形缓冲区默认大小为100MB,达到80%后进行溢写;
(7)、溢写之前排序,按照key的字典序(快排);
(8)、溢写会产生大量溢写文件,会调用merge()方法,并用归并排序,默认10个溢写文件合并成一个大文件。
(9ÿ