分布式计算系统—MapReduce介绍

MapReduce最早是由Google公司研究提出的一种面向大规模数据处理的并行计算模型和方法。MapReduce的灵感来源于函数式语言(比如Lisp)中的内置函数map和reduce。简单来说,在函数式语言里,map表示对一个列表(List)中的每个元素做计算,reduce表示对一个列表中的每个元素做迭代计算。MapReduce极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。

​在MapReduce里,Map处理的是原始数据,可以是杂乱无章的,每条数据之间互相没有关系;到了Reduce阶段,数据是以key/value键值对来组织的,这些value有相关性,至少它们都在一个key下面,于是就符合函数式语言里map和reduce的基本思想了。


实现原理:


实现过程:
1.数据文件在加载时拆分成块(默认128MB)并进行分布,而且每个块被复制到多个数据节点中(默认3份)。
2.然后Master将任务(任务也被分成M个Map任务和R个Reduce任务)分配给空闲的worker
3.worker读取相关的输入数据片段,数据片段会被解析成键值对。然后做Map函数(用户自定义的)处理。
4.通过图中的local write过程键值对被写入到本地磁盘上。(其实键值对是通过分区函数分成R个区域,再周期性的写入到本地磁盘的。)
5.Master将数据存储位置(这个本地磁盘上的存储位置是由上一步返回的)发送给worker,worker读取数据。(这个过程还涉及到排序,因为很多不同的key值会映射到相同的Reduce任务)
6.对上一步的数据做Reduce函数(用户自定义的)处理。

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值