1.MapReduce的整个的执行流程
1.map
- read:InputFormat读取待处理文本,然后进入到mapper中
- map:用户自定义的mapper方法
- collect:mapper方法输出到环形缓冲区,在进去缓冲区之前,先进行了分区,默认是hash分区,一般用户自定义分区,写到80%的时候,开启反向溢写,相当于又开了一个线程,原先的线程继续往缓冲区读,新的线程将缓冲区数据写到磁盘
- 溢写:在写入磁盘之前进入了一次快速排序,保证分区内有序
- merge:所有的文件都溢写完之后,在磁盘上进行了一次归并排序,区内有序
2.mrAPPmaster在观测到map阶段全部完成后,开启reduce task
3.reduce
- copy:主动的从磁盘上拉取对应分区的数据
- sort:进行一次归并排序,
- reduce:相同key的数据进入到同一个reduce,最后,由outformat往出写。
2.yarn执行一个application的流程
首先,jar包main方法里执行了waitforcompletion(),开启yarnrunner,yarnrunner向集群的老大也就是resourcemanager申请运行一个application
resourcemanager返回给yarnrunner一个资源路径,让其提交job资源和application_id
job把split、xml