分布式并行编程模型MapReduce简介

MapReduce编程模型简介


MapReduce编程模型由google公司Jeffery Dean等人设计,用于在分布式并行环境中处理海量数据的计算。它将一个任务分解成更多份细粒度的子任务,这些子任务在空闲的处理节点之间被调度和快速处理之后,最终通过特定的规则进行合并生成最终的结果,其处理模型有点类似于传统编程模型中的[分解和归纳]方法。
MapReduce模型将分布式运算抽象成Map和Reduce两个步骤,从而实现高效的分布式应用。其中Map步骤负责根据用户输入的Key-Value pair生成中间结果,中间结果同样采用Key-Value pair的形式。Reduce步骤则将所有的中间结果根据Key进行合并,然后生成最终结果。而开发人员需要做的就是实现自己的Map和Reduce函数逻辑,然后提交给MapReduce运行环境,比如说现在的开源分布式并行编程框架Hadoop.
MapReduce运行环境一般由两种不同类型的节点组成,分别是负责数据处理的Worker节点,负责任务调度以及各节点间数据共享管理的Master节点。具体的执行流程如下( 附件):

计算模型的核心是 Map 和 Reduce 两个函数,这两个函数由用户负责实现,功能是按一定的映射规则将输入的 <key, value> 对转换成另一个或一批 <key, value> 对输出。 
Map 和 Reduce 函数
函数 输入 输出 说明
Map <k1, v1> List(<k2,v2>) 1. 将小数据集进一步解析成一批 <key,value> 对,输入 Map 函数中进行处理。
2. 每一个输入的 <k1,v1> 会输出一批 <k2,v2>。 <k2,v2> 是计算的中间结果。
Reduce <k2,List(v2)> <k3,v3> 输入的中间结果 <k2,List(v2)> 中的 List(v2) 表示是一批属于同一个 k2 的 value
以一个计算文本文件中每个单词出现的次数的程序为例,<k1,v1> 可以是 <行在文件中的偏移位置, 文件中的一行>,经 Map 函数映射之后,形成一批中间结果 <单词,出现次数>, 而 Reduce 函数则可以对中间结果进行处理,将相同单词的出现次数进行累加,得到每个单词的总的出现次数。
基于 MapReduce 计算模型编写分布式并行程序非常简单,程序员的主要编码工作就是实现 Map 和 Reduce 函数,其它的并行编程中的种种复杂问题,如分布式存储,工作调度,负载平衡,容错处理,网络通信等,均由 MapReduce 框架(比如 Hadoop )负责处理,程序员完全不用操心。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值