MapReduce框架原理之MapReduce工作流程

目录

前言

一、MapReduce工作流程图

二、MapReduce工作流程详解

1、正常流程

2、Combiner  预合并优化

总结


 


前言

MapReduce工作流程详解


一、MapReduce工作流程图

 

二、MapReduce工作流程详解

下面的工作流程详解文字结合mr案例看会比较舒服。(这是一个MapReduce入门案例:https://blog.csdn.net/qq_44110741/article/details/108415818#%E4%BA%94%E3%80%81WordCount%E6%A1%88%E4%BE%8B%E5%AE%9E%E6%93%8D

1、正常流程

ps:这里的序号与图中序号不是对应的。

(1)任务准备。执行Driver中的main()方法,里面有一个job.waitforcompletion()方法,在这个方法里面完成任务准备,主要包括将输入数据切片并将切片规划写入job.split文件,生成 运行任务时的配置文件job.xml,将我们写的MapReduce程序打成jar包。准备好之后将任务提交到yarn的resourcemanger。

(2)任务调度。Resourcemanger接收到客户端提交的任务之后,会选择一个nodemanger在其上边生成一个mapreduce application master进程,由这个进程负责调度客户端提交的任务。

(3)启动map task。master会分析客户端提交的任务,查看任务的切片数量,根据任务的切片数量启动相应的map task。例如:2个切片生成2个map task。

(4)开始执行map task程序。这些map task程序单独运行,相互独立,互不影响。执行的是我们在Mapper中重写的map方法(map方法里面是我们自己的业务逻辑)。map方法中有两个变量 key 和 value ,这两个变量是框架(LineRecordReader类)帮我们从输入数据中读取并封装好的变量,我们只需要拿来用就可以了。

(5)在map方法里面执行我们自己的业务逻辑将输入数据可 key 和 value 处理成我们想要的数据后,再以 key  value 键值对 的形式写出到 环形缓冲区(outputCollector )。

(6)分区。key-value键值对从map写出后,在写入到环形缓冲区之前,会经过分区器,得到一个所属分区的区号,意味着该key-value对以后溢写的分区。

(7)溢写。环形缓冲区是存在于内存的数据结构,默认大小是100M,可以在hadoop配置文件中通过io.sort.mb修改参数。当环形缓冲区的数据越来越多,达到容量的80%时,将这些kv对溢写到磁盘上,根据每个kv的所属分区溢写到多个分区文件。每一次溢写都会读取所有的kv根据mapper输出的keyout进行排序溢写,每个区内的数据是有序的。环形缓冲区容量达到80%的时候就会进行溢写,也就是会进行多次溢写。

(8)reduce归并排序。map task 完成后会形成多个小文件(多次溢写形成),需要进行归并排序。根据分区数量设置相应的reduce task数量,对同一个分区的多个小文件进行归并排序,每个reduce task的工作是一样的。(需要从磁盘上下载文件)

(9)分组调用。排好序之后,调用分组比较器将所有的kv按照k进行分组,每组调用一次reduce方法(我们自己写的业务逻辑)进行数据处理,将最终的数据以kv对的方式写进文件。

2、Combiner  预合并优化

正常流程就是我们所说的上边10步,我们也可以对map task的输出进行优化。假定map task归并排序后的分区1文件中有100个键值对<a,1>,每个键值对占用1个字节存储空间,那么100个<a,1>就会占用100字节。reduce task在执行的时候,需要把这100个字节拷贝到reduce task的机器。

(1)怎么使用combiner进行优化呢?可以在每个map task结束的时候,让每个map task进行预合并,也就是 把100个<a,1> 变成<a,100>,这样的话,只需要用到1个kv对,只需要占用1字节存储空间,reduce task在拷贝的时候,能大大减少网络传输量。

(2)注意 有了combiner还需要reduce task 进行合并吗?是需要的,因为combiner只是每个map task的预合并,是局部合并,还需要reduce task进行全局合并。

(3)Shuffle中的缓冲区大小会影响到mapreduce程序的执行效率,原则上说,缓冲区越大,磁盘IO的次数越少,执行速度就越快。缓冲区的大小可以通过参数调整,参数:io.sort.mb  默认100M。


总结

mapreduce工作流程详解,核心思想,理解牢记。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值