MapReduce编程模型

MapReduce是一种编程模型,用于处理大规模数据集的并行运算。使用MapReduce执行计算任务的时候,每个任务的执行过程都会被分为两个阶段,分别是Map和Reduce,其中Map阶段用于对原始数据进行处理,Reduce阶段用于对Map阶段的结果进行汇总,得到最终结果,这两个阶段的模型如图1所示。

1608176052081_21.gif

 图1 MapReduce简易模型

  MapReduce编程模型借鉴了函数式程序设计语言的设计思想,其程序实现过程是通过map()和reduce()函数来完成的。从数据格式上来看,map()函数接收的数据格式是键值对,产生的输出结果也是键值对形式,reduce()函数会将map()函数输出的键值对作为输入,把相同key值的value进行汇总,输出新的键值对。接下来,通过一张图来描述MapReduce的简易数据流模型,具体如图2所示。

1608176064444_22.gif

   图2 MapReduce简易数据流模型

   关于图2描述的MapReduce简易数据流模型的相关说明,具体如下:

   (1)将原始数据处理成键值对形式。

   (2)将解析后的键值对传给map()函数,map()函数会根据映射规则,将键值对映射为一系列中间结果形式的键值对。

   (3)将中间形式的键值对形成形式传给reduce()函数处理,把具有相同key的value合并在一起,产生新的键值对,此时的键值对就是最终输出的结果。

   这里需要说明的是,对于某些任务来说,可能不一定需要Reduce过程,也就是说,MapReduce的数据流模型可能只有Map过程,由Map产生的数据直接被写入HDFS中。但是,对于大多数任务来说,都是需要Reduce过程的,并且可能由于任务繁重,需要设定多个Reduce,例如,下面是一个具有多个Map和Reduce的MapReduce模型,具体如图3所示。

1608176074884_23.gif

 图3 多个Map和Reduce的MapReduce模型

  图3演示的是含有3个Map和2个Reduce的MapReduce程序,其中,由Map产生的相关key的输出都会集中到Reduce中处理,而Reduce是最后的处理过程,其结果不会进行第二次汇总。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值