第6章-Hadoop—分布式大数据系统_第1页
第6章-Hadoop—分布式大数据系统_第2页
第6章-Hadoop—分布式大数据系统_第3页
第6章-Hadoop—分布式大数据系统_第4页
第6章-Hadoop—分布式大数据系统_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 目 录p第第1 1章章 云计算与大数据基础云计算与大数据基础 p第第2 2章章 云计算与大数据的相关技术云计算与大数据的相关技术 p第第3 3章章 虚拟化技术虚拟化技术 p第第4 4章章 集群系统基础集群系统基础 p第第5 5章章 MPIMPI面向计算面向计算p第第6 6章章 HadoopHadoop分布式大数据系统分布式大数据系统p第第7 7章章 HPCCHPCC面向数据的高性能计算集群系统面向数据的高性能计算集群系统 p第第8 8章章 StormStorm基于拓扑的流数据实时计算系统基于拓扑的流数据实时计算系统p第第9 9章章 服务器与数据中心服务器与数据中心 p第第1010章章 云计算

2、大数据仿真技术云计算大数据仿真技术CONTENTSCONTENTS第第6 6章章 HadoopHadoop分布式大数据系统分布式大数据系统2022-5-23并行计算实验室并行计算实验室 第第6 6章章 HadoopHadoop分布式大数据系统分布式大数据系统.1HDFSHDFS文件系统的原型文件系统的原型GFSGFS.2HDFSHDFS文件的基本结构文件的基本结构.3HDFSHDFS的存储过程的存储过程.1MapReduceMapReduce的发展历史的发展历史.2MapRedu

3、ceMapReduce的基本工作过程的基本工作过程.3LISPLISP中的中的MapReduceMapReduce.4MapReduceMapReduce的特点的特点.1相关准备工作相关准备工作6.5.2 6.5.2 JDKJDK的安装配置的安装配置.3下载、解压下载、解压HadoopHadoop, 配置配置HadoopHadoop环境变量环境变量.4修改修改HadoopHadoop配置文件配置文件.5将配置好的将配置好的HadoopHadoop文件文件复制到其他节点复制到其他节点.

4、6启动、停止启动、停止HadoopHadoop.7在在HadoopHadoop系统上运行测系统上运行测试程序试程序WordCountWordCount2022-5-23并行计算实验室并行计算实验室 是由是由ApacheApache软件基金会研发的一种开源、高可靠、软件基金会研发的一种开源、高可靠、伸缩性强的伸缩性强的,主要用于对,主要用于对的海量数的海量数据的处理。据的处理。pHadoopHadoop采用采用,是对,是对GoogleGoogle的的MapReduceMapReduce核心技核心技术的开源实现。术的开源实现。p目前目前Hadoo

5、pHadoop的的包括包括(HadoopHadoop Distribute Distributed File Systemd File System,HadoopHadoop分布式文件系统)和分布式文件系统)和,这一结构实现了,这一结构实现了,十,十分有利于分有利于的系统架构,因此已成为大数据技术领的系统架构,因此已成为大数据技术领域的事实标准。域的事实标准。2022-5-23并行计算实验室并行计算实验室 pHadoopHadoop设计时有以下的几点假设:设计时有以下的几点假设: 服务器失效是正常的;服务器失效是正常的; 存储和处理的数据是海量的;存储和处理

6、的数据是海量的; 文件不会被频繁写入和修改;文件不会被频繁写入和修改; 机柜内的数据传输速度大于机柜间的数据传输速度;机柜内的数据传输速度大于机柜间的数据传输速度; 海量数据的情况下移动计算比移动数据更高效。海量数据的情况下移动计算比移动数据更高效。 2022-5-23并行计算实验室并行计算实验室 6.16.1HadoopHadoop概述概述pHadoop是是Apache开源组织的分布式计算系统,其分为第一代开源组织的分布式计算系统,其分为第一代Hadoop和第二代和第二代Hadoop。p第一代第一代Hadoop包含包含0.20.x、0.21.x、0.22.

7、x三个版本,三个版本,0.20.x最后演化最后演化成了成了1.0.x版本,第二代版本,第二代Hadoop包含包含0.23.x和和2.x两个版本,两个版本,2.x本版比本版比0.23.x版本增加了版本增加了NameNode HA和和Wire-compatibility两个特性,版本发两个特性,版本发展如图展如图6.1所示。所示。图6.1Hadoop本版发展路线2022-5-23并行计算实验室并行计算实验室 6.16.1HadoopHadoop概述概述pHadoop与与MPI在数据处理上的在数据处理上的主要体现在数据存储与数据处理在主要体现在数据存储与数据处理在

8、系统中位置不同,系统中位置不同,MPI是计算与存储分离,是计算与存储分离,Hadoop是计算向存储迁移,是计算向存储迁移,如图如图6.2所示。所示。图6.2Hadoop与MPI在数据处理上的差异2022-5-23并行计算实验室并行计算实验室 6.16.1HadoopHadoop概述概述p在在MPIMPI中数据存储的节点和数据处理的节点往往是不同的,一般中数据存储的节点和数据处理的节点往往是不同的,一般在每次计算开始时在每次计算开始时MPIMPI需要从数据存储节点读取需要处理的数据需要从数据存储节点读取需要处理的数据分配给各个计算节点对数据进行处理,因此分配给

9、各个计算节点对数据进行处理,因此MPIMPI中数据存储和数中数据存储和数据处理是分离的。据处理是分离的。p对于计算密集型的应用对于计算密集型的应用MPIMPI能表现出良好的性能,但对于处理能表现出良好的性能,但对于处理TBTB级数据的数据密集型应用由于网络数据传输速度很慢,级数据的数据密集型应用由于网络数据传输速度很慢,MPIMPI的性的性能会大大降低,甚至会到不可忍受的地步,所以对于构建在能会大大降低,甚至会到不可忍受的地步,所以对于构建在MPIMPI上的并行计算系统网络通讯速度一直是一个重要的性能指标,用上的并行计算系统网络通讯速度一直是一个重要的性能指标,用“计算换通信计算换通信”也是也

10、是MPIMPI并行程序设计中的基本原则。并行程序设计中的基本原则。2022-5-23并行计算实验室并行计算实验室 6.16.1HadoopHadoop概述概述p在在HadoopHadoop中由于有中由于有HDFSHDFS文件系统的支持,数据是分布式存文件系统的支持,数据是分布式存储在各个节点的,计算时各节点读取存储在自己节点的数储在各个节点的,计算时各节点读取存储在自己节点的数据进行处理,从而避免了大量数据在网络上的传递,实现据进行处理,从而避免了大量数据在网络上的传递,实现“计算向存储的迁移计算向存储的迁移”。2022-5-23并行计算实验室并行计算实验室

11、 6.26.2HDFSHDFSpHadoopHadoop系统实现对大数据的自动并行处理,是一种数据并行方法,系统实现对大数据的自动并行处理,是一种数据并行方法,这种方法实现自动并行处理时需要对数据进行划分,而对数据的这种方法实现自动并行处理时需要对数据进行划分,而对数据的划分在划分在HadoopHadoop系统中从数据的存储就开始了,因此文件系统是系统中从数据的存储就开始了,因此文件系统是HaHadoopdoop系统的重要组成部分,也是系统的重要组成部分,也是HadoopHadoop实现自动并行框架的基础。实现自动并行框架的基础。HadoopHadoop的文

12、件系统称为的文件系统称为HDFSHDFS(HadoopHadoop Distributed File Syste Distributed File System m)。)。2022-5-23并行计算实验室并行计算实验室 .1HDFSHDFS文件系统的原型文件系统的原型GFSGFSpHadoop中的中的HDFS原型来自原型来自(Google File System,),为了满足),为了满足Google迅速增长的数据处理要求,迅速增长的数据处理要求,Google设计并实现了设计并实现了GFS。pGoogle文件系统是一个可扩展的分布式文件系统,用

13、于对大量数据进行访问文件系统是一个可扩展的分布式文件系统,用于对大量数据进行访问的大型、分布式应用。的大型、分布式应用。p它运行于廉价的普通硬件上,但可以提供容错功能。它可以给大量的用户提它运行于廉价的普通硬件上,但可以提供容错功能。它可以给大量的用户提供总体性能较高的服务,也可以提供容错功能。供总体性能较高的服务,也可以提供容错功能。p我们认为我们认为GFS是一种面向不可信服务器节点而设计的文件系统。是一种面向不可信服务器节点而设计的文件系统。是是“”、“”、“”,有了自己的文件系统,谷歌就可以有效地组织庞大的数据、服务器,有了自己的文件系统,谷歌就可以有效地组织庞大的数据、服务器和存储,并

14、用它们工作。作为谷歌和存储,并用它们工作。作为谷歌“三宝三宝”的其中之一,的其中之一,GFSGFS的技术优势不言的技术优势不言而喻。而喻。2022-5-23并行计算实验室并行计算实验室 .1HDFSHDFS文件系统的原型文件系统的原型GFSGFSpGFS为分布式结构,它是一个为分布式结构,它是一个,主要由一个,主要由一个Master(主)和众多(主)和众多chunkserver(大块设备)构成的,体系结构如图(大块设备)构成的,体系结构如图6.3所示。所示。图6.3GFS的体系结构2022-5-23并行计算实验室并行计算实验室 http:/w

15、.1HDFSHDFS文件系统的原型文件系统的原型GFSGFSp下面简单描述一下下面简单描述一下。(1)客户端使用固定大小的块将应用程序指定的文件名和字节偏)客户端使用固定大小的块将应用程序指定的文件名和字节偏移转换成文件的一个块索引,向移转换成文件的一个块索引,向Master发送包含文件名和块索发送包含文件名和块索引的请求。引的请求。(2)Master收到客户端发来的请求,收到客户端发来的请求,Master向块服务器发出指示,向块服务器发出指示,同时时刻监控众多同时时刻监控众多chunkserver的状态。的状态。chunkserver缓存缓存Master

16、从客户端收到的文件名和块索引等信息。从客户端收到的文件名和块索引等信息。2022-5-23并行计算实验室并行计算实验室 .1HDFSHDFS文件系统的原型文件系统的原型GFSGFS(3)Master通过和通过和chunkserver的交互,向客户端发送的交互,向客户端发送chunk-handle和副本位置。其中文件被分成若干个块,而每个块都是由一个不和副本位置。其中文件被分成若干个块,而每个块都是由一个不变的、全局惟一的变的、全局惟一的64位的位的chunk-handle标识。标识。Handle是由是由Master在块创建时分配的。而出于安全

17、性考虑,每一个文件块都要被复制在块创建时分配的。而出于安全性考虑,每一个文件块都要被复制到多个到多个chunkserver上,一般默认上,一般默认3个副本。个副本。(4)客户端向其中的一个副本发出请求,请求指定了)客户端向其中的一个副本发出请求,请求指定了chunk handle(chunkserver以以chunk handle标识标识chunk)和块内的一个字节区)和块内的一个字节区间。间。(5)客户端从)客户端从chunkserver获得块数据,任务完成。获得块数据,任务完成。2022-5-23并行计算实验室并行计算实验室 .1HDFS

18、HDFS文件系统的原型文件系统的原型GFSGFSp通常通常ClientClient可以在一个请求中询问多个可以在一个请求中询问多个chunkchunk的地址,而的地址,而MasterMaster也可以很快回应这些请求。也可以很快回应这些请求。pGFSGFS是可以被多个用户同时访问的,一般情况下,是可以被多个用户同时访问的,一般情况下,ApplicApplicationation和和chunkserverchunkserver是可以在同一台机子上的,主要的是可以在同一台机子上的,主要的数据流量是通过数据流量是通过ApplicationApplication和和chunkserverchunkse

19、rver之间,数据之间,数据访问的本地性极大地减少了访问的本地性极大地减少了ApplicationApplication与与MasterMaster之间的之间的交互访问,减少了交互访问,减少了MasterMaster的负荷量,提高了文件系统的的负荷量,提高了文件系统的性能。性能。2022-5-23并行计算实验室并行计算实验室 .1HDFSHDFS文件系统的原型文件系统的原型GFSGFSp客户端从来不会从客户端从来不会从MasterMaster读和写文件数据。客户端只是读和写文件数据。客户端只是询问询问MasterMaster它应该和哪个它应该

20、和哪个 chunkserverchunkserver联系。联系。ClientClient在在一段限定的时间内将这些信息缓存,在后续的操作中客一段限定的时间内将这些信息缓存,在后续的操作中客户端直接和户端直接和chunkserverchunkserver交互。由于交互。由于MasterMaster对于读和写的对于读和写的操作极少,所以极大地减小了操作极少,所以极大地减小了MasterMaster的工作负荷,真正的工作负荷,真正提高了提高了MasterMaster的利用性能。的利用性能。pMasterMaster保存着三类元数据(保存着三类元数据(metadatametadata):文件名和块的)

21、:文件名和块的名字空间、从文件到块的映射、副本位置。所有的名字空间、从文件到块的映射、副本位置。所有的metadmetadataata都放在内存中。操作日志的引入可以更简单、更可靠都放在内存中。操作日志的引入可以更简单、更可靠地更新地更新MasterMaster的信息。的信息。2022-5-23并行计算实验室并行计算实验室 .1HDFSHDFS文件系统的原型文件系统的原型GFSGFSp为为GFSGFS的控制和神经系统,副本为的控制和神经系统,副本为MasterMaster的备份,的备份,ChunkChunk主要用来和主要用来和用户交换数据。网

22、络中的主机瘫痪,不会对整个系统造成大的影响,用户交换数据。网络中的主机瘫痪,不会对整个系统造成大的影响,替换上去的主机会自动重建数据。即使替换上去的主机会自动重建数据。即使MasterMaster瘫痪,也会有瘫痪,也会有ShadowShadow作为替补,并且作为替补,并且ShadowShadow在一定时候也会充当在一定时候也会充当MasterMaster来提供控制和数来提供控制和数据交换。据交换。GoogleGoogle每天有大量的硬盘损坏,但是由于有每天有大量的硬盘损坏,但是由于有GFSGFS,这些硬,这些硬盘的损坏是允许的。盘的损坏是允许的。p有人形象地比喻:分布式的文件系统被分块为很多细

23、胞单元,一旦有人形象地比喻:分布式的文件系统被分块为很多细胞单元,一旦细胞损坏,神经系统(细胞损坏,神经系统(MasterMaster)会迅速发现并有相应的冗余措施来)会迅速发现并有相应的冗余措施来使系统正常运行,这些细胞可以看作很多使系统正常运行,这些细胞可以看作很多GFSGFS主机。这一工作方式主机。这一工作方式就是人类大脑的工作方式。就是人类大脑的工作方式。2022-5-23并行计算实验室并行计算实验室 .1HDFSHDFS文件系统的原型文件系统的原型GFSGFSp当然,当然,可以给大量的用户提供总体性能较高可以给大量的用户提供总体性能

24、较高的服务,的服务,: :(1 1)GoogleGoogle采用的存储方法是大量、分散的普通廉价服务器的存储方式,极大降低了采用的存储方法是大量、分散的普通廉价服务器的存储方式,极大降低了成本。成本。(2 2)对大文件数据快速存取,这个毫无疑问是可以达到的。)对大文件数据快速存取,这个毫无疑问是可以达到的。(3 3)容易扩展,它是成本很低的普通电脑,支持动态插入节点;)容易扩展,它是成本很低的普通电脑,支持动态插入节点;(4 4)容错能力强,它的数据同时会在多个)容错能力强,它的数据同时会在多个chunkserverchunkserver上进行备份,具有相当强的容上进行备份,具有相当强的容错性

25、;错性;(5 5)高效访问,它是通过)高效访问,它是通过Big tableBig table来实现的,它是来实现的,它是Google File SystemGoogle File System上层的结构。上层的结构。GFSGFS在实现分布式文件系统的做法上面很多都是简单的,但是确实非常高效。在实现分布式文件系统的做法上面很多都是简单的,但是确实非常高效。(6 6)GFSGFS相对于相对于HDFSHDFS稳定性是无庸置疑的,并在稳定性是无庸置疑的,并在GoogleGoogle系统中得到了采用且稳定的运系统中得到了采用且稳定的运行。行。2022-5-23并行计算实验室并行计算实验室 http:/w

26、.2HDFSHDFS文件的基本结构文件的基本结构pHDFS是一种是一种的的,该文件系统完全是仿照,该文件系统完全是仿照Google的的GFS文件系统而设计的,文件系统而设计的,HDFS的架构如图的架构如图6.4所示。所示。图6.4 HDFS的架构2022-5-23并行计算实验室并行计算实验室 .2HDFSHDFS文件的基本结构文件的基本结构pHDFS由一个名叫由一个名叫Namenode的主节点和多个名叫的主节点和多个名叫Datanode的子节的子节点组成。点组成。pNamenode存储着文件系统的元数据,

27、这些元数据包括文件系统的存储着文件系统的元数据,这些元数据包括文件系统的名字空间等,向用户映射文件系统,并负责管理文件的存储等服务,名字空间等,向用户映射文件系统,并负责管理文件的存储等服务,但实际的数据并不存放在但实际的数据并不存放在Namenode。Namenode的作用就像是文的作用就像是文件系统的总指挥,并向访问文件系统的客户机提供文件系统的映射,件系统的总指挥,并向访问文件系统的客户机提供文件系统的映射,这种做法并不是这种做法并不是Google或或Hadoop的创新,这和传统并行计算系统的创新,这和传统并行计算系统中的单一系统映像(中的单一系统映像(Single System Ima

28、ge)的做法相同。)的做法相同。pHDFS中的中的Datanode用于实际对数据的存放,对用于实际对数据的存放,对Datanode上数据上数据的访问并不通过的访问并不通过Namemode,而是与用户直接建立数据通信。,而是与用户直接建立数据通信。pHadoop启动后我们能看到启动后我们能看到Namenode和和Datanode这两个进程。这两个进程。2022-5-23并行计算实验室并行计算实验室 .2HDFSHDFS文件的基本结构文件的基本结构是这样的:是这样的: 用户请求创建文件的指令由用户请求创建文件的指令由Namenode进行接收,进行

29、接收,Namenode将存储数据的将存储数据的Datanode的的IP返回给用户,并通知其他接收副本返回给用户,并通知其他接收副本的的Datanode,由用户直接与,由用户直接与Datanode进行数据传送。进行数据传送。Namenode同时存储相关的元数据。同时存储相关的元数据。 整个文件系统采用标准整个文件系统采用标准TCP/IP协议通信,实际是架设在协议通信,实际是架设在Linux文文件系统上的一个上层文件系统。件系统上的一个上层文件系统。HDFS上的一个典型文件大小一上的一个典型文件大小一般都在般都在G字节至字节至T字节。字节。2022-5-23并行计算实验室并行计算实验室 http:

30、/.2HDFSHDFS文件的基本结构文件的基本结构p主从式是云计算系统的一种典型架构方法,系统通过主节主从式是云计算系统的一种典型架构方法,系统通过主节点屏蔽底层的复杂结构,并向用户提供方便的文件目录映点屏蔽底层的复杂结构,并向用户提供方便的文件目录映射。有些改进的主从式架构可能会采用分层的主从式方法,射。有些改进的主从式架构可能会采用分层的主从式方法,以减轻主节点的负荷。以减轻主节点的负荷。2022-5-23并行计算实验室并行计算实验室 .3HDFSHDFS的存储过程的存储过程:一个是一个是,一个是,

31、一个是。 副本策略保证了文件存储的高可靠性;副本策略保证了文件存储的高可靠性; 分块策略保证数据并发读写的效率并且是分块策略保证数据并发读写的效率并且是MapReduceMapReduce实现并行数据处理的基础。实现并行数据处理的基础。2022-5-23并行计算实验室并行计算实验室 .3HDFSHDFS的存储过程的存储过程:通常:通常HDFSHDFS在存储一个文件会将文件切为在存储一个文件会将文件切为6 64MB4MB大小的块来进行存储,数据块会被分别存储在不同的大小的块来进行存储,数据块会被分别存储在不同的DaDatanodetanode节

32、点上,这一过程其实就是一种数据任务的切分过节点上,这一过程其实就是一种数据任务的切分过程,在后面对数据进行程,在后面对数据进行MapReduceMapReduce操作时十分重要,同时数操作时十分重要,同时数据被分块存储后在数据读写时能实现对数据的并发读写,据被分块存储后在数据读写时能实现对数据的并发读写,提高数据读写效率。提高数据读写效率。pHDFSHDFS采用采用64MB64MB这样较大的文件这样较大的文件有以下有以下3 3个个: (1 1)降低客户端与主服务器的交互代价;)降低客户端与主服务器的交互代价; (2 2)降低网络负载;)降低网络负载; (3 3)减少主服务器中元数据的大小。)减

33、少主服务器中元数据的大小。2022-5-23并行计算实验室并行计算实验室 .3HDFSHDFS的存储过程的存储过程pHDFSHDFS对数据块典型的副本策略为对数据块典型的副本策略为3 3个副本,个副本, 第一个副本存放在本地节点,第一个副本存放在本地节点, 第二个副本存放在同一个机架的另一个节点,第二个副本存放在同一个机架的另一个节点, 第三个本副本存放在不同机架上的另一个节点。第三个本副本存放在不同机架上的另一个节点。p这样的副本策略保证了在这样的副本策略保证了在HDFSHDFS文件系统中存储的文件具有文件系统中存储的文件具有很高的可靠性。

34、很高的可靠性。2022-5-23并行计算实验室并行计算实验室 .3HDFSHDFS的存储过程的存储过程可以描述如下:可以描述如下: 写入操作首先由写入操作首先由NamenodeNamenode为该文件创建一个新的记录,该记录为该文件创建一个新的记录,该记录为文件分配存储节点包括文件的分块存储信息,在写入时系统为文件分配存储节点包括文件的分块存储信息,在写入时系统会对文件进行分块,文件写入的客户端获得存储位置的信息后会对文件进行分块,文件写入的客户端获得存储位置的信息后直接与指定的直接与指定的DatanodeDatanode进行数据通信,将文件

35、块按进行数据通信,将文件块按NamenodeNamenode分分配的位置写入指定的配的位置写入指定的DatanodeDatanode,数据块在写入时不再通过,数据块在写入时不再通过NamenNamenodeode,因此,因此NamenodeNamenode不会成为数据通信的瓶颈。不会成为数据通信的瓶颈。2022-5-23并行计算实验室并行计算实验室 6.36.3MapReduceMapReduce编程框架编程框架 p在云计算和大数据技术领域被广泛提到并被成功应用的一项技术就在云计算和大数据技术领域被广泛提到并被成功应用的一项技术就是是MapReduceMap

36、Reduce。MapReduceMapReduce是是GoogleGoogle系统和系统和HadoopHadoop系统中的一项核心系统中的一项核心技术。技术。MapReduceMapReduce出现的历史要追述到出现的历史要追述到19561956年,图灵奖获得者著名的人工智能专家年,图灵奖获得者著名的人工智能专家McCaMcCarthyrthy首次提出了首次提出了LISPLISP语言的构想,而在语言的构想,而在LISPLISP语言中就包含了现在我们所采用的语言中就包含了现在我们所采用的M MapReduce apReduce 功能。功能。LISPLISP语言是一种用于人工智能领域的语言,在人工

37、智能领域有语言是一种用于人工智能领域的语言,在人工智能领域有很多的应用,很多的应用,LISPLISP在在19561956年设计时主要是希望能有效地进行年设计时主要是希望能有效地进行“符号运算符号运算”。LISPLISP是一种表处理语言,其逻辑简单但结构不同于其他的高级语言。是一种表处理语言,其逻辑简单但结构不同于其他的高级语言。19601960年,年,McCarthyMcCarthy更是极有预见性地提出:更是极有预见性地提出:“今后计算机将会作为公共设施提今后计算机将会作为公共设施提供给公众供给公众”,这一观点已与现在人们对云计算的定义极为相近了,所以我们把,这一观点已与现在人们对云计算的定义

38、极为相近了,所以我们把M McCarthycCarthy称为称为“云计算之父云计算之父”。MapReduceMapReduce在在McCarthyMcCarthy提出时并没有考虑到其在分布式系统和大数据上会有如此提出时并没有考虑到其在分布式系统和大数据上会有如此大的应用前景,只是作为一种函数操作来定义的。大的应用前景,只是作为一种函数操作来定义的。2022-5-23并行计算实验室并行计算实验室 .1MapReduceMapReduce的发展历史的发展历史p20042004年年GoogleGoogle公司的公司的DeanDean发表文章将发表文

39、章将MapReduceMapReduce这一编程模这一编程模型在分布式系统中的应用进行了介绍,从此型在分布式系统中的应用进行了介绍,从此MapRuduceMapRuduce分布分布式编程模型进入了人们的视野。式编程模型进入了人们的视野。p可以认为分布式可以认为分布式MapReduceMapReduce是由是由GoogleGoogle公司首先提出的。公司首先提出的。pHadoopHadoop跟进了跟进了GoogleGoogle的这一思想,可以认为的这一思想,可以认为HadoopHadoop是一个是一个开源版本的开源版本的GoogleGoogle系统,正是由于系统,正是由于HadoopHadoop

40、的跟进才使普通的跟进才使普通用户得以开发自己的基于用户得以开发自己的基于MapReduceMapReduce框架的云计算应用系统。框架的云计算应用系统。2022-5-23并行计算实验室并行计算实验室 .2MapReduceMapReduce的基本工作过程的基本工作过程pMapReduceMapReduce是一种处理大数据集的编程模式,它借鉴了最早是一种处理大数据集的编程模式,它借鉴了最早出现在出现在LISPLISP语言和其他函数语言中的语言和其他函数语言中的mapmap和和reducereduce操作,操作,MaMapReducepReduc

41、e的基本过程为:的基本过程为: 用户通过用户通过mapmap函数处理函数处理key/valuekey/value对,从而产生一系列不同的对,从而产生一系列不同的keykey/value/value对,对,reducereduce函数将函数将keykey值相同的值相同的key/valuekey/value对进行合并。对进行合并。现实中的很多处理任务都可以利用这一模型进行描述。通过现实中的很多处理任务都可以利用这一模型进行描述。通过MapMapReduceReduce框架能实现基于数据切分的自动并行计算,大大简化了框架能实现基于数据切分的自动并行计算,大大简化了分布式编程的难度,并为在相对廉价的商

42、品化服务器集群系统分布式编程的难度,并为在相对廉价的商品化服务器集群系统上实现大规模的数据处理提供了可能。上实现大规模的数据处理提供了可能。2022-5-23并行计算实验室并行计算实验室 .2MapReduceMapReduce的基本工作过程的基本工作过程pMapReduceMapReduce的过程其实非常简单,我们用一个实际的例子来说明的过程其实非常简单,我们用一个实际的例子来说明MapMapReduceReduce的编程模型。假设我们需要对一个文件的编程模型。假设我们需要对一个文件example.txtexample.txt中出现中出现的

43、单词次数进行统计,这就是著名的的单词次数进行统计,这就是著名的wordcountwordcount例子,在这个例子例子,在这个例子中中MapReduceMapReduce的编程模型可以这样来描述:的编程模型可以这样来描述: 用户需要处理的文件用户需要处理的文件example.txtexample.txt已被分为多个数据片存储在集已被分为多个数据片存储在集群系统中不同的节点上了,用户先使用一个群系统中不同的节点上了,用户先使用一个MapMap函数函数Map(examMap(example.txtple.txt, , 文件内容文件内容) ),在这个,在这个MapMap函数中函数中keykey值为值

44、为example.txtexample.txt,keykey通常是指一个具有唯一值的标识,通常是指一个具有唯一值的标识,valuevalue值就是值就是example.txtexample.txt文件中的内容。文件中的内容。 MapMap操作程序通常会被分布到存有文件操作程序通常会被分布到存有文件example.txtexample.txt数据片段的数据片段的节点上发起,这个节点上发起,这个MapMap操作将产生一组中间操作将产生一组中间key/valuekey/value对(对(word, word, countcount),),2022-5-23并行计算实验室并行计算实验室 http:/w

45、.2MapReduceMapReduce的基本工作过程的基本工作过程 这里的这里的wordword代表出现在文件代表出现在文件example.txtexample.txt片段中的任一个单词,片段中的任一个单词,每个每个MapMap操作所产生的操作所产生的key/valuekey/value对只代表对只代表example.txtexample.txt一部分内一部分内容的统计值。容的统计值。 ReduceReduce函数将接收集群中不同节点函数将接收集群中不同节点MapMap函数生成的中间函数生成的中间key/valukey/value e对,并将对,并将Ke

46、yKey相同的相同的key/valuekey/value对进行合并,在这个例子中对进行合并,在这个例子中ReduReducece函数将对所有函数将对所有keykey值相同的值相同的valuevalue值进行求和合并,最后输出值进行求和合并,最后输出的的key/valuekey/value对就是(对就是(word, countword, count),其中),其中countcount就是这个单词就是这个单词在文件在文件example.txtexample.txt中出现的总的次数。中出现的总的次数。2022-5-23并行计算实验室并行计算实验室

47、.2MapReduceMapReduce的基本工作过程的基本工作过程p下面我们通过一个下面我们通过一个来讲解来讲解。p来自江苏、浙江、山东三个省的来自江苏、浙江、山东三个省的9 9所高校联合举行了一场编程大赛,所高校联合举行了一场编程大赛,每个省有每个省有3 3所高校参加,每所高校各派所高校参加,每所高校各派5 5名队员参赛,各所高校的比名队员参赛,各所高校的比赛平均成绩如表赛平均成绩如表6.16.1所示。所示。江苏省江苏省浙江省浙江省山东省山东省南京大学南京大学9090浙江大学浙江大学9595山东大学山东大学9292东南大学东南大学9393浙江工业大学浙江工业大学8484中国海洋大学中国海洋

48、大学8585河海大学河海大学8484宁波大学宁波大学8888青岛大学青岛大学87872022-5-23并行计算实验室并行计算实验室 .2MapReduceMapReduce的基本工作过程的基本工作过程p我们可以用如表我们可以用如表6.26.2所示的形式来表示成绩,这样每所高校所示的形式来表示成绩,这样每所高校就具备了所属省份和平均分数这两个属性,即就具备了所属省份和平均分数这两个属性,即 。南京大学:南京大学: 江苏省,江苏省,9090东南大学:东南大学: 江苏省,江苏省,9393河海大学:河海大学: 江苏省,江苏省,8484浙江大学:浙江大

49、学: 浙江省,浙江省,9595浙江工业大学:浙江工业大学: 浙江省,浙江省,8484宁波大学:宁波大学: 浙江省,浙江省,8888山东大学:山东大学: 山东省,山东省,9292中国海洋大学:中国海洋大学: 山东省,山东省,8585青岛大学:青岛大学: 山东省,山东省,87872022-5-23并行计算实验室并行计算实验室 .2MapReduceMapReduce的基本工作过程的基本工作过程p统计各个省份高校的平均分数时,高校的名称并不是很重要,统计各个省份高校的平均分数时,高校的名称并不是很重要,我们略去高校名称,如表我们略去高校名称,如表6

50、.36.3所示。所示。江苏省,江苏省,9090江苏省,江苏省,9393江苏省,江苏省,8484浙江省,浙江省,9595浙江省,浙江省,8484浙江省,浙江省,8888山东省,山东省,9292山东省,山东省,8585山东省,山东省,8787p接下来对各个省份的高校的成绩进行汇总,如表接下来对各个省份的高校的成绩进行汇总,如表6.46.4所示。所示。江苏省,江苏省,9090、9393、8484浙江省,浙江省,9595、8484、8888山东省,山东省,9292、8585、87872022-5-23并行计算实验室并行计算实验室 .2MapReduc

51、eMapReduce的基本工作过程的基本工作过程p计算求得各省高校的平均值如表计算求得各省高校的平均值如表6.56.5所示。所示。江苏省,江苏省,8989浙江省,浙江省,8989山东省,山东省,8888p以上为计算各省平均成绩的主要步骤,我们可以用以上为计算各省平均成绩的主要步骤,我们可以用MapReduceMapReduce来实现,来实现,其详细步骤如下:其详细步骤如下: MapReduceMapReduce包含包含MapMap、ShuffleShuffle和和ReduceReduce三个步骤,其中三个步骤,其中ShufflShuffle e由由HadoopHadoop自动完成,自动完成,H

52、adoopHadoop的使用者可以无需了解并行程序的使用者可以无需了解并行程序的底层实现,只需关注的底层实现,只需关注MapMap和和ReduceReduce的实现。的实现。2022-5-23并行计算实验室并行计算实验室 .2MapReduceMapReduce的基本工作过程的基本工作过程1. Map Input1. Map Input: 在在MapMap部分,我们需要输入部分,我们需要输入Key,Value 数据,这里数据,这里KeyKey是高校的是高校的名称,名称,ValueValue是属性值,即所属省份和平均分数,如表是属性值,即所属省

53、份和平均分数,如表6.66.6所示。所示。KeyKey:南京大学:南京大学ValueValue: 江苏省,江苏省,9090KeyKey:东南大学:东南大学ValueValue: 江苏省,江苏省,9393KeyKey:河海大学:河海大学ValueValue: 江苏省,江苏省,8484KeyKey:浙江大学:浙江大学ValueValue: 浙江省,浙江省,9595KeyKey:浙江工业大学:浙江工业大学ValueValue: 浙江省,浙江省,8484KeyKey:宁波大学:宁波大学ValueValue: 浙江省,浙江省,8888KeyKey:山东大学:山东大学ValueValue: 山东省,山东省

54、,9292KeyKey:中国海洋大学:中国海洋大学ValueValue: 山东省,山东省,8585KeyKey:青岛大学:青岛大学ValueValue: 山东省,山东省,87872022-5-23并行计算实验室并行计算实验室 .2MapReduceMapReduce的基本工作过程的基本工作过程2. Map Output2. Map Output: 对所属省份平均分数进行重分组,去除高校名称,将所属省份变对所属省份平均分数进行重分组,去除高校名称,将所属省份变为为KeyKey,平均分数变为,平均分数变为ValueValue,如表,如表6.76.

55、7所示。所示。KeyKey:江苏省:江苏省ValueValue:9090KeyKey:江苏省:江苏省ValueValue:9393KeyKey:江苏省:江苏省ValueValue:8484KeyKey:浙江省:浙江省ValueValue:9595KeyKey:浙江省:浙江省ValueValue:8484KeyKey:浙江省:浙江省ValueValue:8888KeyKey:山东省:山东省ValueValue:9292KeyKey:山东省:山东省ValueValue:8585KeyKey:山东省:山东省ValueValue:87872022-5-23并行计算实验室并行计算实验室 http:/ww

56、.2MapReduceMapReduce的基本工作过程的基本工作过程3. Shuffle Output3. Shuffle Output: ShuffleShuffle由由HadoopHadoop自动完成,其任务是实现自动完成,其任务是实现MapMap,对,对KeyKey进行分组,进行分组,用户可以获得用户可以获得ValueValue的列表,即的列表,即ListList,如表,如表6.86.8所示。所示。KeyKey:江苏省:江苏省ListList:9090、9393、8484KeyKey:浙江省:浙江省ListList:9595、8484、8888KeyK

57、ey:山东省:山东省ListList:9292、8585、87874. Reduce Input4. Reduce Input: 表表6.86.8中的内容将作为中的内容将作为ReduceReduce任务的输入数据,即从任务的输入数据,即从ShuffleShuffle任务任务中获得的(中获得的(Key,ListKey,List)。)。2022-5-23并行计算实验室并行计算实验室 .2MapReduceMapReduce的基本工作过程的基本工作过程5. Reduce Output5. Reduce Output: ReduceReduce任务的

58、功能是完成用户的计算逻辑,这里的任务是计算任务的功能是完成用户的计算逻辑,这里的任务是计算每个省份的高校学生的比赛平均成绩,获得的最终结果如表每个省份的高校学生的比赛平均成绩,获得的最终结果如表6.96.9所所示。示。江苏省,江苏省,8989浙江省,浙江省,8989山东省,山东省,88882022-5-23并行计算实验室并行计算实验室 .3LISPLISP中的中的MapReduceMapReducep为了进一步理解为了进一步理解MapReduceMapReduce,我们简单介绍最早使用,我们简单介绍最早使用MapMap和和R Reduceed

59、uce的的LISPLISP语言中的语言中的MapMap和和ReduceReduce操作。操作。p下面的下面的LISPLISP语句定义的这个语句定义的这个MapMap操作是将向量(操作是将向量(1 2 3 4 51 2 3 4 5)和向量(和向量(10 9 8 7 610 9 8 7 6)进行相乘的操作,输出也为向量()进行相乘的操作,输出也为向量(1 10 18 24 28 300 18 24 28 30)。)。(map vector #*#(1 2 3 4 5)#(10 9 8 7 6)-#(10 18 24 28 30) 这个这个MapMap操作对应于向量到向量的映射,两个向量按操作对应于

60、向量到向量的映射,两个向量按乘积关系进行映射。乘积关系进行映射。2022-5-23并行计算实验室并行计算实验室 .3LISPLISP中的中的MapReduceMapReducep下面的下面的LISPLISP语句定义的这个语句定义的这个ReduceReduce操作是将向量(操作是将向量(1 2 3 4 1 2 3 4 5 6 7 8 9 105 6 7 8 9 10)中的元素进行求和的)中的元素进行求和的ReduceReduce操作操作, ,输出结果输出结果为为5555。 这个这个ReduceReduce操作对应于向量的约简,它将向量按求和操作

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论