1.在MapReduce程序读取文件的输入目录上存放相应的文件。
2.客户端程序在 submit ()方法执行前,获取待处理的数据信息,然后根据集群中
的参数的配置形成一个任务分配规划。
3. 客户端提交切片信息给Yarn, Yarn中的resourcemanager启动MRAPPmaster。
4. MrAPPmaster 启动后根据本次job的描述信息,计算出需要的maptask实例对象,
然后向集群申请机器启动相应数量的maptask 进程。
5. Maptask 利用客户端指定的inputformat来读取数据,形成输出的KV键值对。
6. Maptask将输入KV键值对传递给客户定义的map ()方法,做逻辑运算。
7. Map ()方法运算完毕后将KV对收集到maptask缓存。
8. shufle阶段
(1) maptask 收集我们的map ()方法输出的KV对,放到环形缓存区中。
(2) maptask中的KV对按照K分区排序,并不断溢写到本地磁盘文件,可能会溢出多
个文件。
(3)多个文件会被合并成大的溢出文件。
(4)在溢写过程中,及合并过程中,都会不停的进行分区和针对key的排序操作。
(5) Reducetask根据自己的分区号,去各个maptask机器上获取相应的结果分区数据。
(6) Reducetask会取到同一个分区 的来自不同maptask的结果文件,reducetask会将这
些文件再进行归并排序。
(7)合并成大文件后,shuffle 的过程也就结束的,后面进入reducetask的逻辑运算过
程(从文件中取出一个一个的键值对group,调用用户自定义的reduce ()方法)。
9. MrAPPmaster,监控到所有的maptask进程任务完成后,会根据客户指定的参数启动
相应数量的rducetask进程,并告知reducetask进程要处理的数据分区。
10. reducetask进程启动后,根据MAPPmastr告知的待处理数据所在位置,从若干台
maptask运行所在机器上获取若干个maptsk输出结果文件,并在本地进行重新归并排序,
然后按照相同key 的KV为一个组,调用客户定义的rducel(方法进行逻辑运算。
11. reducetask 运算完毕后,调用客户指定的ouputformat将结果数据输出到外部。