MapReduce详细流程

在这里插入图片描述

  1. 选择待处理文件
  2. client进行submit之前,client对待处理文件进行切片。
  3. client将任务提交到yarn集群中
  4. yarn选择一个NodeManager开启对应的MapReduceApplicationMaster,MRAM计算出需要开启的MapTask的数量。MRAM与yarn交互,完成节点的选择,然后MRAM与对应NM进行通信,在其上面开启MapTask。
  5. MapTask通过RecordReader的read方法读取待处理文件。
  6. 通过自定义逻辑对数据进行计算。
  7. 计算完成后将数据通过contextWriter写入outputCollector(环形缓冲区)中。环形缓冲区默认100M,数据加索引总大小达到80%之后,将数据溢写到磁盘。数据写入环形缓冲区的时候会记录分区。
  8. 在写入磁盘之前,会对数据进行分区,在对分区内进行排序(快速排序),使得区内有序。
  9. 将排完序的数据溢写到磁盘中。
  10. 对所有数据进行一次排序,由于区内有序,所以采用归并排序。 排完序后,MapTask阶段结束。

在这里插入图片描述

  1. MRAM检测到所以MapTask完成后,启动对应数量的ReduceTask。并告知各个ReduceTask处理那个分区的数据。
  2. ReduceTask将分配给自己的分区的数据从各Map端拉取到本地(先拉取到内存,内存不够了再存到磁盘)。
  3. 将拉取过来的不同Map端的数据(内存和磁盘)进行排序(归并)。
  4. Reduce对排完序的数据进行拉取,按照key分组,每一拉取一组数据。
  5. 通过RecordWriter的write方法将计算结果写出,流程结束。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值