《深入理解大数据:大数据处理与编程实践》一一1.3 MapReduce并行计算技术简介

1.3 MapReduce并行计算技术简介

1.3.1 MapReduce的基本概念和由来
1.?什么是MapReduce
MapReduce是面向大数据并行处理的计算模型、框架和平台,它隐含了以下三层含义:
1)MapReduce是一个基于集群的高性能并行计算平台(Cluster Infrastructure)。它允许用市场上普通的商用服务器构成一个包含数十、数百至数千个节点的分布和并行计算集群。
2)MapReduce是一个并行计算与运行软件框架(Software Framework)。它提供了一个庞大但设计精良的并行计算软件框架,能自动完成计算任务的并行化处理,自动划分计算数据和计算任务,在集群节点上自动分配和执行任务以及收集计算结果,将数据分布存储、数据通信、容错处理等并行计算涉及到的很多系统底层的复杂细节交由系统负责处理,大大减少了软件开发人员的负担。
3)MapReduce是一个并行程序设计模型与方法(Programming Model & Methodology)。它借助于函数式程序设计语言Lisp的设计思想,提供了一种简便的并行程序设计方法,用Map和Reduce两个函数编程实现基本的并行计算任务,提供了抽象的操作和并行编程接口,以简单方便地完成大规模数据的编程和计算处理。
2.?MapReduce的由来
MapReduce最早是由Google公司研究提出的一种面向大规模数据处理的并行计算模型和方法。Google公司设计MapReduce的初衷主要是为了解决其搜索引擎中大规模网页数据的并行化处理。Google公司发明了MapReduce之后首先用其重新改写了其搜索引擎中的Web文档索引处理系统。但由于MapReduce可以普遍应用于很多大规模数据的计算问题,因此自发明MapReduce以后,Google公司内部进一步将其广泛应用于很多大规模数据处理问题。到目前为止,Google公司内有上万个各种不同的算法问题和程序都使用MapReduce进行处理。
2003年和2004年,Google公司在国际会议上分别发表了两篇关于Google分布式文件系统和MapReduce的论文,公布了Google的GFS和MapReduce的基本原理和主要设计思想。2004年,开源项目Lucene(搜索索引程序库)和Nutch(搜索引擎)的创始人Doug Cutting发现MapReduce正是其所需要的解决大规模Web数据处理的重要技术,因而模仿Google MapReduce,基于Java设计开发了一个称为Hadoop的开源MapReduce并行计算框架和系统。自此,Hadoop成为Apache开源组织下最重要的项目,自其推出后很快得到了全球学术界和工业界的普遍关注,并得到推广和普及应用。
MapReduce的推出给大数据并行处理带来了巨大的革命性影响,使其已经成为事实上的大数据处理的工业标准。尽管MapReduce还有很多局限性,但人们普遍公认,MapReduce是到目前为止最为成功、最广为接受和最易于使用的大数据并行处理技术。MapReduce的发展普及和带来的巨大影响远远超出了发明者和开源社区当初的意料,以至于马里兰大学教授、2010年出版的《Data-Intensive Text Processing with MapReduce》一书的作者Jimmy Lin在书中提出:MapReduce改变了我们组织大规模计算的方式,它代表了第一个有别于冯·诺依曼结构的计算模型,是在集群规模而非单个机器上组织大规模计算的新的抽象模型上的第一个重大突破,是到目前为止所见到的最为成功的基于大规模计算资源的计算模型。
1.3.2 MapReduce的基本设计思想
面向大规模数据处理,MapReduce有以下三个层面上的基本设计思想。
1.?对付大数据并行处理:分而治之
一个大数据若可以分为具有同样计算过程的数据块,并且这些数据块之间不存在数据依赖关系,则提高处理速度的最好办法就是采用“分而治之”的策略进行并行化计算。MapReduce采用了这种“分而治之”的设计思想,对相互间不具有或者有较少数据依赖关系的大数据,用一定的数据划分方法对数据分片,然后将每个数据分片交由一个节点去处理,最后汇总处理结果。
2.?上升到抽象模型:Map与Reduce
(1)Lisp语言中的Map和Reduce
MapReduce借鉴了函数式程序设计语言Lisp的设计思想。Lisp是一种列表处理语言。它是一种应用于人工智能处理的符号式语言,由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)#(4 3 2 1))
通过定义加法map运算将两个向量相加产生与前述add运算同样的结果#(5 5 5 5)。
进一步,Lisp也可以定义reduce操作进行某种归并运算,如:
(reduce#'+#(1 2 3 4))通过加法归并产生累加结果10。
(2)MapReduce中的Map和Reduce
MPI等并行计算方法缺少高层并行编程模型,为了克服这一缺陷,MapReduce借鉴了Lisp函数式语言中的思想,用Map和Reduce两个函数提供了高层的并行编程抽象模型和接口,程序员只要实现这两个基本接口即可快速完成并行化程序的设计。
与Lisp语言可以用来处理列表数据一样,MapReduce的设计目标是可以对一组顺序组织的数据元素/记录进行处理。现实生活中,大数据往往是由一组重复的数据元素/记录组成,例如,一个Web访问日志文件数据会由大量的重复性的访问日志构成,对这种顺序式数据元素/记录的处理通常也是顺序式扫描处理。图1-13描述了典型的顺序式大数据处理的过程和特征:

图1-13 典型的顺序式大数据处理过程和特征
MapReduce将以上的处理过程抽象为两个基本操作,把上述处理过程中的前两步抽象为Map操作,把后两步抽象为Reduce操作。于是Map操作主要负责对一组数据记录进行某种重复处理,而Reduce操作主要负责对Map的中间结果进行某种进一步的结果整理和输出。以这种方式,MapReduce为大数据处理过程中的主要处理操作提供了一种抽象机制。
3.?上升到构架:以统一构架为程序员隐藏系统层细节
MPI等并行计算方法缺少统一的计算框架支持,程序员需要考虑数据存储、划分、分发、结果收集、错误恢复等诸多细节;为此,MapReduce设计并提供了统一的计算框架,为程序员隐藏了绝大多数系统层面的处理细节,程序员只需要集中于应用问题和算法本身,而不需要关注其他系统层的处理细节,大大减轻了程序员开发程序的负担。
MapReduce所提供的统一计算框架的主要目标是,实现自动并行化计算,为程序员隐藏系统层细节。该统一框架可负责自动完成以下系统底层相关的处理:
1)计算任务的自动划分和调度。
2)数据的自动化分布存储和划分。
3)处理数据与计算任务的同步。
4)结果数据的收集整理(sorting,combining,partitioning,等)。
5)系统通信、负载平衡、计算性能优化处理。
6)处理系统节点出错检测和失效恢复。
1.3.3 MapReduce的主要功能和技术特征
1.?MapReduce的主要功能
MapReduce通过抽象模型和计算框架把需要做什么(What need to do)与具体怎么做(How to do)分开了,为程序员提供了一个抽象和高层的编程接口和框架,程序员仅需要关心其应用层的具体计算问题,仅需编写少量的处理应用本身计算问题的程序代码;如何具体完成这个并行计算任务所相关的诸多系统层细节被隐藏起来,交给计算框架去处理:从分布代码的执行,到大到数千、小到数个节点集群的自动调度使用。
MapReduce提供了以下的主要功能:
1)数据划分和计算任务调度:系统自动将一个作业(Job)待处理的大数据划分为很多个数据块,每个数据块对应于一个计算任务(Task),并自动调度计算节点来处理相应的数据块。作业和任务调度功能主要负责分配和调度计算节点(Map节点或Reduce节点),同时负责监控这些节点的执行状态,并负责Map节点执行的同步控制。
2)数据/代码互定位:为了减少数据通信,一个基本原则是本地化数据处理,即一个计算节点尽可能处理其本地磁盘上所分布存储的数据,这实现了代码向数据的迁移;当无法进行这种本地化数据处理时,再寻找其他可用节点并将数据从网络上传送给该节点(数据向代码迁移),但将尽可能从数据所在的本地机架上寻找可用节点以减少通信延迟。
3)系统优化:为了减少数据通信开销,中间结果数据进入Reduce节点前会进行一定的合并处理;一个Reduce节点所处理的数据可能会来自多个Map节点,为了避免Reduce计算阶段发生数据相关性,Map节点输出的中间结果需使用一定的策略进行适当的划分处理,保证相关性数据发送到同一个Reduce节点;此外,系统还进行一些计算性能优化处理,如对最慢的计算任务采用多备份执行、选最快完成者作为结果。
4)出错检测和恢复:以低端商用服务器构成的大规模MapReduce计算集群中,节点硬件(主机、磁盘、内存等)出错和软件出错是常态,因此MapReduce需要能检测并隔离出错节点,并调度分配新的节点接管出错节点的计算任务。同时,系统还将维护数据存储的可靠性,用多备份冗余存储机制提高数据存储的可靠性,并能及时检测和恢复出错的数据。
2.?MapReduce的主要技术特征
MapReduce设计上具有以下主要的技术特征:
1)向“外”横向扩展,而非向“上”纵向扩展
即MapReduce集群的构建完全选用价格便宜、易于扩展的低端商用服务器,而非价格昂贵、不易扩展的高端服务器。对于大规模数据处理,由于有大量数据存储需要,显而易见,基于低端服务器的集群远比基于高端服务器的集群优越,这就是为什么MapReduce并行计算集群会基于低端服务器实现的原因。
2)失效被认为是常态
MapReduce集群中使用大量的低端服务器,因此,节点硬件失效和软件出错是常态,因而一个良好设计、具有高容错性的并行计算系统不能因为节点失效而影响计算服务的质量,任何节点失效都不应当导致结果的不一致或不确定性;任何一个节点失效时,其他节点要能够无缝接管失效节点的计算任务;当失效节点恢复后应能自动无缝加入集群,而不需要管理员人工进行系统配置。MapReduce并行计算软件框架使用了多种有效的错误检测和恢复机制,如节点自动重启技术,使集群和计算框架具有对付节点失效的健壮性,能有效处理失效节点的检测和恢复。
3)把处理向数据迁移
传统高性能计算系统通常有很多处理器节点与一些外存储器节点相连,如用存储区域网络(Storage Area,SAN Network)连接的磁盘阵列,因此,大规模数据处理时外存文件数据I/O访问会成为一个制约系统性能的瓶颈。为了减少大规模数据并行计算系统中的数据通信开销,代之以把数据传送到处理节点(数据向处理器或代码迁移),应当考虑将处理向数据靠拢和迁移。MapReduce采用了数据/代码互定位的技术方法,计算节点将首先尽量负责计算其本地存储的数据,以发挥数据本地化特点,仅当节点无法处理本地数据时,再采用就近原则寻找其他可用计算节点,并把数据传送到该可用计算节点。
4)顺序处理数据、避免随机访问数据
大规模数据处理的特点决定了大量的数据记录难以全部存放在内存,而通常只能放在外存中进行处理。由于磁盘的顺序访问要远比随机访问快得多,因此MapReduce主要设计为面向顺序式大规模数据的磁盘访问处理。为了实现面向大数据集批处理的高吞吐量的并行处理,MapReduce可以利用集群中的大量数据存储节点同时访问数据,以此利用分布集群中大量节点上的磁盘集合提供高带宽的数据访问和传输。
5)为应用开发者隐藏系统层细节
软件工程实践指南中,专业程序员认为之所以写程序困难,是因为程序员需要记住太多的编程细节(从变量名到复杂算法的边界情况处理),这对大脑记忆是一个巨大的认知负担,需要高度集中注意力;而并行程序编写有更多困难,如需要考虑多线程中诸如同步等复杂繁琐的细节。由于并发执行中的不可预测性,程序的调试查错也十分困难;而且,大规模数据处理时程序员需要考虑诸如数据分布存储管理、数据分发、数据通信和同步、计算结果收集等诸多细节问题。MapReduce提供了一种抽象机制将程序员与系统层细节隔离开来,程序员仅需描述需要计算什么(What to compute),而具体怎么去计算(How to compute)就交由系统的执行框架处理,这样程序员可从系统层细节中解放出来,而致力于其应用本身计算问题的算法设计。
6)平滑无缝的可扩展性
这里指出的可扩展性主要包括两层意义上的扩展性:数据扩展和系统规模扩展性。理想的软件算法应当能随着数据规模的扩大而表现出持续的有效性,性能上的下降程度应与数据规模扩大的倍数相当;在集群规模上,要求算法的计算性能应能随着节点数的增加保持接近线性程度的增长。绝大多数现有的单机算法都达不到以上理想的要求;把中间结果数据维护在内存中的单机算法在大规模数据处理时很快失效;从单机到基于大规模集群的并行计算从根本上需要完全不同的算法设计。奇妙的是,MapReduce在很多情形下能实现以上理想的扩展性特征。多项研究发现,对于很多计算问题,基于MapReduce的计算性能可随节点数目增长保持近似于线性的增长。

时间: 2024-08-27 19:18:29

《深入理解大数据:大数据处理与编程实践》一一1.3 MapReduce并行计算技术简介的相关文章

《深入理解大数据:大数据处理与编程实践》一一导读

前 言 2012年以来,大数据(Big Data)技术在全世界范围内迅猛发展,在全球学术界.工业界和各国政府得到了高度关注和重视,掀起了一场可与20世纪90年代的信息高速公路相提并论的发展热潮. 大数据技术如此重要,已经被我国政府提升到国家重大发展战略的高度.2014年我国政府工作报告中指出:"设立新兴产业创业创新平台,在新一代移动通信.集成电路.大数据.先进制造.新能源.新材料等方面赶超先进,引领未来产业发展".由此可见,大数据已经被我国政府列为推动国家科技创新和引领经济结构优化升级

大数据大能耐:掌握6招为企业保驾护航

文章讲的是大数据大能耐:掌握6招为企业保驾护航,在这样的一个大数据飞速增长的时期,企业对用户行为习惯的关注度比以往任何时候都要高很多,这是可以理解的.只不过,我们很容易忽略该行业曾经在之前已探明的相关标准.但在此之余,有一点必须牢记,很多商人,甚至是C-level的企业高管并不了解大数据会对企业带来的变革及破坏性的威胁.直到这时,许多客户可能只是在浪费了很多钱. 当你正准备最大程度经营大数据的时候,往往只是包括收集大量的数据,然后寻找其模式和对其进行分析,这些是由廉价的存储.丰富的传感器和新的软

大数据=大泄密?信息安全需未雨绸缪

文章讲的是大数据=大泄密,信息安全需未雨绸缪,"你没有隐私,忘记这事吧.""大数据=大泄密",在今天看来,这不是耸人听闻.随着大数据应用变得越来越普遍,数据泄露问题也变得更加突出.近日,又连续传出了多起信息泄露事件. "全国东风雪铁龙网站后台的售前信息我都有,还可以提供即时的",一位黑客在网络上兜售车主信息,这是乌云平台近日发布的一则关于东风雪铁龙车主信息泄露的消息,据说或有10万车主遭殃,而造成此次泄露的原因就是官网漏洞.而就在不久前,乌云还提

高新区以“大数据+大生态”推进“千园之城”建设

在太阳湖畔品味大数据,在大数据中领略湖光山色. 9月14日,贵阳高新区太阳湖滨河公园之呼叫山庄正式"开门迎客".在这个大数据节点的周边,满是山水相间的秀丽景色.在这里,高新企业和滨河公园相辅相成,难分难离. 太阳湖滨河公园是贵阳高新区贯彻实施"大数据大生态"战略的重要举措之一,也是高新区推动"千园之城"建设的示范点.该公园位于贵阳高新区沙文片区大数据城,东北自麦架河青山路起,西南至麦架河青龙路止,全长8.3km,沿河打造有金甲广场.古树新韵.布谷

谈大数据 大数据的精髓在于“预测用户行为”

谈大数据 大数据的精髓在于"预测用户行为".它能够知道你的喜好,它能够通过你过去留下的行为,看过什么东西,浏览过什么网站,去过什么地方,喜欢什么吃的,就是说你在互联网上都留下了一些足迹,这些信息能够帮助大数据的服务商推进你有兴趣的信息,比如你在玩一个游戏,他会猜你喜欢什么样的游戏,它能推荐你什么样的应用和商品. 企业建立内部的数据平台已是大势所趋,但只有市场出现专业的数据平台实现数据的管理和交易,才能推动大数据快速发展. 未来移动互联网的发展更普及之后,我们可以看到,整个营销会迎来一个

提升大数据大生态产品供给水平

贵州省3月1日印发<关于推进供给侧结构性改革 提高经济发展质量和效益的意见>,指出贵州推进供给侧结构性改革的主要目标是,增强供给结构对需求变化的适应性和灵活性,加快实现发展方式.发展要素.产业分工和产品结构的转变,基本形成品种丰.品质优.品牌强的特色产品生产供给体系,使全省经济发生质的结构性重大变化. 贵州将着力提高优质农产品供给能力,推进工业转型升级,加快发展以山地旅游为重点的现代服务业,提升大数据大生态产品供给水平,降低企业成本,补齐短板增强公共服务供给精准性,强化托底保障,建设标准体系,

“大数据——大文化高峰论坛”探寻文化复兴路

首届"大数据--大文化高峰论坛"(简称"双大论坛")将于10月25日在上海宝山区举办.据悉,此次论坛由中国文化传媒集团国家文化产业发展促进中心.上海宝山科技园联合主办,上海宝山科技控股有限公司.中传华彩(北京)国际文化发展有限公司共同承办. "双大论坛"负责人表示,2013年被称为"大数据元年",信息技术已对文化创作.生产.传播与消费等领域产生深刻影响."双大论坛"的举办,一方面是为了解和把握当下高新技术发

流动大数据大不同 轻盈IT大价值

[天极网服务器频道专稿]数据海量爆发,存储泛滥成灾.越来越多的企业意识到数据在http://www.aliyun.com/zixun/aggregation/8651.html">运营管理中的重要性,并希望将其运用到企业的决策中,但企业要如何将数据与业务进行融合,从而让决策更加全面和准确呢?在大数据时代,数据不再是数据仓库,而是供应链,数据是流动的,企业只有加强内外部跨领域数据的融合和流动,才能真正发挥大数据的核心价值. 8月20日,"轻盈IT 戴尔存储架构解决方案论坛"

干货分享:I时代HR大数据思路与腾讯实践

作者:马海刚本文由马海刚先生授权HRTechChina发布,转载请注明文章作者及出处 引语: HR管理经过几十年的发展,理论基础仍是工业时代的科学管理经验. 近年来面对汹涌而来的移动互联网大潮以及层出不穷各种新的管理挑战,HR管理的理论和方法并没有出现相得益彰的创新内容.唯一引起了广泛关注的HR管理遇 上大数据的话题,目前公开的研究也多聚焦在概念阶段,能够真正应用到企业HR管理实践的案例却不多见.本文旨在结合腾讯在HR大数据领域的探索历程,来说 说大数据将如何助力HR管理升级,迎接这个崭新的时代