- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数字媒体技术讲座代码分析-2014329700042黄宇达
数字媒体技术讲座MapReduce浅析
14数字媒体技术
2014329700042
黄宇达
谷歌在2004年发表了可以分析大量数据的MapReduce算法。每当我们听到“大数据”这个词时,它指的是因为太大而让仅仅一台机器难以有效存储或分析的问题。MapReduce通过把计算量分配给不同的计算机群,能够解决大部分和大数据有关的分析问题。Hadoop提供了最受欢迎的利用MapReduce算法来管理大数据的开源方式。现今MapReduce是主流。
所以通常来说,每当我们听到“大数据”,那也许意味着Hadoop被用来存储数据,也通常意味着数据的抽取和检索是用的MapReduce。
MapReduce 算法是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念Map(映射)和Reduce(归约),是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。
以上是百度百科对MapReduce的。按照理解,我觉得跟一个有趣的类比十分相似。。其实在MapReduce的算法中,是里面的黑桃找出来,你只需要目标进行是否是黑桃的判断。映射里面的结果汇总。如将每一个判断汇总得到总数有多少张是黑桃的结果。
在如今大数据时代,
算法的重要性逐步提高的同时,MapReduce发挥着不可的作用。
采用的是方法,对处理。
其实MapReduce最大的亮点,就是在于
在MapReduce中,定义了两个抽象函数接口
由用户去编程实现:
map: (k1; v1) → [(k2; v2)]
输入:键值对(k1; v1)表示的数据
处理:文档数据记录(如文本文件中的行,或数据表格中的行)将以“键值对”形式传入map函数;map函数将处理这些键值对,并以另一种键值对形式输出处理的一组键值对中间结果 [(k2; v2)]
输出:键值对[(k2; v2)]表示的一组中间数据
reduce: (k2; [v2]) → [(k3; v3)]
输入: 由map输出的一组键值对[(k2; v2)] 将被进行合并处理将同样主键下的不同数值合并到一个列表[v2]中,故reduce的输入为(k2; [v2])
处理:对传入的中间结果列表数据进行某种整理或进一步的处理,并产生最终的某种形式的结果输出[(k3; v3)] 。
输出:最终输出结果[(k3; v3)]
Map和Reduce为程序员提供了一个清晰的操作接口抽象描述。
程序员仅需要关心其应用层的具体计算问题,仅需编写少量的处理应用本身计算问题的程序代码
具体完成这个并行计算任务所相关的诸多系统层细节被隐藏起来,交给计算框架去处理:从分布代码的执行,到大到数千小到单个节点集群的自动调度使用。
数据划分和计算任务调度:
系统自动将一个作业(Job)待处理的大数据划分为很多个数据块,每个数据块对应于一个计算任务(Task),并自动 调度计算节点来处理相应的数据块。作业和任务调度功能主要负责分配和调度计算节点(Map节点或Reduce节点),同时负责监控这些节点的执行状态,并负责Map节点执行的同步控制。数据/代码互定位:
为了减少数据通信,一个基本原则是本地化数据处理,即一个计算节点尽可能处理其本地磁盘上所分布存储的数据,这实现了代码向 数据的迁移;当无法进行这种本地化数据处理时,再寻找其他可用节点并将数据从网络上传送给该节点(数据向代码迁移),但将尽可能从数据所在的本地机架上寻 找可用节点以减少通信延迟。
Map和Reduce借鉴函数式设计语言Lisp的设计思想。
函数式程序设计(functional programming)语言Lisp是一种列表处理 语言(List processing),是一种应用于人工智能处理的符号式语言,由MIT的人工智能专家、图灵奖获得者John McCarthy于1958年设计发明。
Lisp定义了可对列表元素进行整体处理的各种操作,如:
如:(add #(1 2 3 4) #(4 3 2 1)) 将产生结果: #(5 5 5 5)
Lisp中也提供了类似于Map和Reduce的操作
如: (map ‘vector #+ #(1 2 3 4 5) #(10 11 12 13 14))
通过定义加法map运算将2个向量相加产生结果#(11 13 15 17 19)
(reduce #’+ #(11 13 15 17 19)) 通过加法归并产生累加结果75
总结而言。
目前MapReduc
文档评论(0)