大数据平台与编程第4章 Hadoop MapReduce.pptx
第4章HadoopMapReduce
MapReduce是一种分布式计算处理思想,而HadoopMapReduce是一个基于Hadoop平台的分布式计算框架。主要由两部分组成:编程模型和运行时环境。其中,编程模型为用户提供了非常易用的编程接口,用户只需要像编写串行程序一样实现几个简单的函数即可实现一个分布式程序,而其他比较复杂的工作,如节点间的通信、节点失效、数据切分等,全部由MapReduce运行时环境完成,用户无须关心这些细节。
?MapReduce介绍目录?HadoopMapReduce编程?MapReduce开发进阶?MapReduce编程实例?HadoopMapReduce原理?本章习题?本章小结
MapReduce介绍随着技术进步和应用普及,数据量呈爆发式增长,到2005年前后,数据处理需求增长的速度已经快于计算资源处理能力的提升速度,传统单机处理能力无法满足需求。用多台计算机来并行处理这些海量数据有效地解决了计算瓶颈,Hadoop就是利用互相联网的多台计算机使用MapReduce来并行地处理计算大量数据。
MapReduce的发展历程1.大数据背景本书将大数据定义为无法被符合服务等级协议的单台计算机处理或(有些时候)存储的任何数据集。理论上单台计算机可处理任意规模数据,但海量数据处理时间往往超出允许的数据处理时间。案例:若某个业务单元每次平均需要处理200GB的数据,数据的读取速率是每秒钟50MB。单机处理:读取速率50MB/s,需1小时完成,无法满足需求。并行处理:将200GB数据分配给100个节点,每个节点处理2GB数据,可1分钟内完成。
2.什么是MapReduceMapReduce是面向大数据并行处理的计算模型、框架和平台,它隐含了以下三层含义:1)MapReduce是一个基于集群的高性能并行计算平台(ClusterInfrastructure)。它允许用市场上普通的商用服务器构成一个包含数十、数百至数千个节点的分布和并行计算集群。2)MapReduce是一个并行计算与运行软件框架(SoftwareFramework)。它提供了一个庞大但设计精良的并行计算软件框架,能自动完成计算任务的并行化处理,自动划分计算数据和计算任务,在集群节点上自动分配和执行任务以及收集计算结果,将数据分布存储、数据通信、容错处理等并行计算涉及到的很多系统底层的复杂细节交由系统负责处理,大大减少了软件开发人员的负担。MapReduce的发展历程
3)MapReduce是一个并行程序设计模型与方法(ProgrammingModelMethodology)。它借助于函数式程序设计语言Lisp的设计思想,提供了一种简便的并行程序设计方法,用Map和Reduce两个函数编程实现基本的并行计算任务,提供了抽象的操作和并行编程接口,以简单方便地完成大规模数据的编程和计算处理。
3.MapReduce的由来MapReduce最早是由Google公司研究提出的一种面向大规模数据处理的并行计算模型和方法。最初用于Google搜索引擎中的Web文档索引处理系统,后来广泛应用于Google内部各种大数据处理任务。MapReduce的发展历程2003年和2004年,Google发表论文公布了Google的GFS和MapReduce的基本原理和主要设计思想。2004年,DougCutting基于MapReduce开发了开源框架HadoopMapReduce的推出给大数据并行处理带来了巨大的革命性影响,使其已经成为事实上的大数据处理的工业标准。MapReduce突破了传统冯·诺依曼计算模型的限制,是在集群规模上组织大规模计算的新型抽象模型的重大突破、是目前为止最成功、最易用的基于大规模计算资源的计算模型。
MapReduce设计思想一个经典的大数据处理问题:(1)处理1MB大小的英文文档,统计每个单词出现的次数,这很容易。(2)处理1TB大小的英文文档,统计每个单词出现的次数,文档已难以全部加载进内存中。(3)处理100TB大小的英文文档,统计每个单词出现的次数,文档太大,一台机器都难以放下。所以当处理大数据任务时,单机的处理能力已经是完全不能胜任了,所以最好的办法就是采用集群分布式计算。1.分而治之
一个大数据若可以分为具有同样计算过程的数据块,并且这些数据块之间不存在数据依赖关系,则提高处理速度的最好办法就是采用“分而治之”的策略进行并行化计算。MapReduce采用了这种“分而治之”的设计思想,对相互间不具有或者有较少数据依赖关系的大数据,用一定的数据划分方法对数据分片,然后将每个数据分片交由一个节点去处理,最后汇总处理结果。
Java,Hadoop,RDBMSProlog,Lisp,Pasca