注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

淘尽网 官方博客

淘尽网http://www.tao3w.com做最好的比价网站

 
 
 

日志

 
 
关于我

淘尽网 http://www.tao3w.com 做最好的比价网站,做最好的数据抓取专家。

网易考拉推荐
GACHA精选

什么是MapReduce  

2012-09-21 16:44:54|  分类: 推荐系统 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
1、MapReduce来龙去脉 

MapReduce是一个说难懂也难懂、说好懂也好懂的概念。 
说它难懂,是因为,如果你只理论上的去学习、去理解,确实很难懂。 
说它好懂,是因为,如果你亲手在hadoop运行过几个MapReduce的job,并稍微学点hadoop的工作原理,基本上也就理解MapReduce的概念了。 

所以,有句话说的特别好:“如果将编程比作运动的话,那么它绝对不是表演项目,而是竞技项目。”(摘自《Erlang程序设计》第10页) 

但是,在这里,我还是想向不了解MapReduce的同学们介绍一下MapReduce。 
MapReduce借用了函数式编程的概念,是google发明的一种数据处理模型。因为google几乎爬了互联网上的所有网页,要为处理这些网页并为搜索引擎建立索引是一项非常艰巨的任务,必须借助成千上万台机器同时工作(也就是分布式并行处理),才有可能完成建立索引的任务。 

所以,google发明了MapReduce数据处理模型,而且他们还就此发表了相关论文。 


后来,Doug Cutting老大就根据这篇论文硬生生的复制了一个MapReduce出来,也就是今天的Hadoop。如果没听说过hadoop,请参考《hadoop扫盲篇》。 


2、MapReduce工作过程 

知道了MapReduce是分布式数据处理编程模型后,下面我们看看它是怎么工作的。 

MapReduce处理数据过程主要分成2个阶段:map阶段和reduce阶段。先执行map阶段,再执行reduce阶段。 

1) 在正式执行map函数前,需要对输入进行“分片”(就是将海量数据分成大概相等的“块”,hadoop的一个分片默认是64M),以便于多个map同时工作,每一个map任务处理一个“分片”。 
2) 分片完毕后,多台机器就可以同时进行map工作了。 
   map函数要做的事情,相当于对数据进行“预处理”,输出所要的“关切”。 
   map对每条记录的输出以<key,value> pair的形式输出。 
3) 在进入reduce阶段之前,还要将各个map中相关的数据(key相同的数据)归结到一起,发往一个reducer。这里面就涉及到多个map的输出“混合地”对应多个reducer的情况,这个过程叫做“洗牌”。 
4) 接下来进入reduce阶段。相同的key的map输出会到达同一个reducer。 
   reducer对key相同的多个value进行“reduce操作”,最后一个key的一串value经过reduce函数的作用后,变成了一个value。 


上面粗略的介绍了MapRedcue。来发张图,更有利于理解: 
什么是MapReduce - jjdoor - 淘尽网 官方博客 
上图来自《Hadoop The Definitive Guide》 
  评论这张
 
阅读(274)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017