Hadoop分布式大数据系统

上传人:桔**** 文档编号:568569622 上传时间:2024-07-25 格式:PPT 页数:78 大小:842KB
返回 下载 相关 举报
Hadoop分布式大数据系统_第1页
第1页 / 共78页
Hadoop分布式大数据系统_第2页
第2页 / 共78页
Hadoop分布式大数据系统_第3页
第3页 / 共78页
Hadoop分布式大数据系统_第4页
第4页 / 共78页
Hadoop分布式大数据系统_第5页
第5页 / 共78页
点击查看更多>>
资源描述

《Hadoop分布式大数据系统》由会员分享,可在线阅读,更多相关《Hadoop分布式大数据系统(78页珍藏版)》请在金锄头文库上搜索。

1、云计算与大数据技术云计算与大数据技术 人民邮电出版社王鹏 黄焱 安俊秀 张逸琴 编著 目录pp第第第第1 1 1 1章章章章 云计算与大数据基础云计算与大数据基础云计算与大数据基础云计算与大数据基础 pp第第第第2 2 2 2章章章章 云计算与大数据的相关技术云计算与大数据的相关技术云计算与大数据的相关技术云计算与大数据的相关技术 pp第第第第3 3 3 3章章章章 虚拟化技术虚拟化技术虚拟化技术虚拟化技术 pp第第第第4 4 4 4章章章章 集群系统基础集群系统基础集群系统基础集群系统基础 pp第第第第5 5 5 5章章章章 MPI MPI MPI MPI面向计算面向计算面向计算面向计算pp

2、第第第第6 6 6 6章章章章 Hadoop Hadoop Hadoop Hadoop分布式大数据系统分布式大数据系统分布式大数据系统分布式大数据系统pp第第第第7 7 7 7章章章章 HPCC HPCC HPCC HPCC面向数据的高性能计算集群系统面向数据的高性能计算集群系统面向数据的高性能计算集群系统面向数据的高性能计算集群系统 pp第第第第8 8 8 8章章章章 Storm Storm Storm Storm基于拓扑的流数据实时计算系统基于拓扑的流数据实时计算系统基于拓扑的流数据实时计算系统基于拓扑的流数据实时计算系统pp第第第第9 9 9 9章章章章 服务器与数据中心服务器与数据中心

3、服务器与数据中心服务器与数据中心 pp第第第第10101010章章章章 云计算大数据仿真技术云计算大数据仿真技术云计算大数据仿真技术云计算大数据仿真技术CONTENTS第第6 6章章 Hadoop Hadoop分布式大数据系统分布式大数据系统第6章Hadoop分布式大数据系统pp云计算与大数据技术云计算与大数据技术 7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org第第6 6章章 Hadoop Hadoop分布式大数据系统分布式大数据系统pp6.16.1HadoopHadoop概述概述pp6.26.2HDFSHDFS6.2.16.2.16.2.16.2.1HD

4、FSHDFSHDFSHDFS文件系统的原型文件系统的原型文件系统的原型文件系统的原型GFSGFSGFSGFS6.2.26.2.26.2.26.2.2HDFSHDFSHDFSHDFS文件的基本结构文件的基本结构文件的基本结构文件的基本结构6.2.36.2.36.2.36.2.3HDFSHDFSHDFSHDFS的存储过程的存储过程的存储过程的存储过程pp6.36.3MapReduceMapReduce编程框架编程框架 6.3.16.3.16.3.16.3.1MapReduceMapReduceMapReduceMapReduce的发展历史的发展历史的发展历史的发展历史6.3.26.3.26.3.2

5、6.3.2MapReduceMapReduceMapReduceMapReduce的基本工作过程的基本工作过程的基本工作过程的基本工作过程6.3.36.3.36.3.36.3.3LISPLISPLISPLISP中的中的中的中的MapReduceMapReduceMapReduceMapReduce6.3.46.3.46.3.46.3.4MapReduceMapReduceMapReduceMapReduce的特点的特点的特点的特点pp6.46.4实现实现Map/ReduceMap/Reduce的的C C语言实例语言实例pp6.56.5建立建立HadoopHadoop开发环境开发环境6.5.16

6、.5.16.5.16.5.1相关准备工作相关准备工作相关准备工作相关准备工作6.5.2 6.5.2 6.5.2 6.5.2 JDKJDKJDKJDK的安装配置的安装配置的安装配置的安装配置6.5.36.5.36.5.36.5.3下载、解压下载、解压下载、解压下载、解压HadoopHadoopHadoopHadoop, 配置配置配置配置HadoopHadoopHadoopHadoop环境变量环境变量环境变量环境变量6.5.46.5.46.5.46.5.4修改修改修改修改HadoopHadoopHadoopHadoop配置文件配置文件配置文件配置文件6.5.56.5.56.5.56.5.5将配置好

7、的将配置好的将配置好的将配置好的HadoopHadoopHadoopHadoop文件文件文件文件复制到其他节点复制到其他节点复制到其他节点复制到其他节点6.5.66.5.66.5.66.5.6启动、停止启动、停止启动、停止启动、停止HadoopHadoopHadoopHadoop6.5.76.5.76.5.76.5.7在在在在HadoopHadoopHadoopHadoop系统上运行测系统上运行测系统上运行测系统上运行测试程序试程序试程序试程序WordCountWordCountWordCountWordCount7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.o

8、rgppHadoopHadoopHadoopHadoop是由是由是由是由ApacheApacheApacheApache软件基金会研发的一种开源、高可靠、软件基金会研发的一种开源、高可靠、软件基金会研发的一种开源、高可靠、软件基金会研发的一种开源、高可靠、伸缩性强的伸缩性强的伸缩性强的伸缩性强的分布式计算系统分布式计算系统分布式计算系统分布式计算系统,主要用于对,主要用于对,主要用于对,主要用于对大于大于大于大于1TB1TB1TB1TB的海量数的海量数的海量数的海量数据的处理。据的处理。据的处理。据的处理。ppHadoopHadoopHadoopHadoop采用采用采用采用JavaJavaJa

9、vaJava语言开发语言开发语言开发语言开发,是对,是对,是对,是对GoogleGoogleGoogleGoogle的的的的MapReduceMapReduceMapReduceMapReduce核心技核心技核心技核心技术的开源实现。术的开源实现。术的开源实现。术的开源实现。pp目前目前目前目前HadoopHadoopHadoopHadoop的的的的核心模块核心模块核心模块核心模块包括包括包括包括系统系统系统系统HDFSHDFSHDFSHDFS(Hadoop Hadoop Hadoop Hadoop Distributed File SystemDistributed File SystemD

10、istributed File SystemDistributed File System,HadoopHadoopHadoopHadoop分布式文件系统)和分布式文件系统)和分布式文件系统)和分布式文件系统)和分分分分布式计算框架布式计算框架布式计算框架布式计算框架MapReduceMapReduceMapReduceMapReduce,这一结构实现了,这一结构实现了,这一结构实现了,这一结构实现了计算和存储的高计算和存储的高计算和存储的高计算和存储的高度耦合度耦合度耦合度耦合,十分有利于,十分有利于,十分有利于,十分有利于面向数据面向数据面向数据面向数据的系统架构,因此已成为大的系统架构,

11、因此已成为大的系统架构,因此已成为大的系统架构,因此已成为大数据技术领域的事实标准。数据技术领域的事实标准。数据技术领域的事实标准。数据技术领域的事实标准。7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.orgppHadoopHadoopHadoopHadoop设计时有以下的几点假设:设计时有以下的几点假设:设计时有以下的几点假设:设计时有以下的几点假设:服务器失效是正常的;服务器失效是正常的;服务器失效是正常的;服务器失效是正常的;存储和处理的数据是海量的;存储和处理的数据是海量的;存储和处理的数据是海量的;存储和处理的数据是海量的;文件不会被频繁写入和修改;文

12、件不会被频繁写入和修改;文件不会被频繁写入和修改;文件不会被频繁写入和修改;机柜内的数据传输速度大于机柜间的数据传输速度;机柜内的数据传输速度大于机柜间的数据传输速度;机柜内的数据传输速度大于机柜间的数据传输速度;机柜内的数据传输速度大于机柜间的数据传输速度;海量数据的情况下移动计算比移动数据更高效。海量数据的情况下移动计算比移动数据更高效。海量数据的情况下移动计算比移动数据更高效。海量数据的情况下移动计算比移动数据更高效。 7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.16.1HadoopHadoop概述概述ppHadoopHadoop是是是是Apa

13、cheApache开源组织的分布式计算系统,其分为第一代开源组织的分布式计算系统,其分为第一代开源组织的分布式计算系统,其分为第一代开源组织的分布式计算系统,其分为第一代HadoopHadoop和第二代和第二代和第二代和第二代HadoopHadoop。pp第一代第一代第一代第一代HadoopHadoop包含包含包含包含0.20.x0.20.x、0.21.x0.21.x、0.22.x0.22.x三个版本,三个版本,三个版本,三个版本,0.20.x0.20.x最后演化最后演化最后演化最后演化成了成了成了成了1.0.x1.0.x版本,第二代版本,第二代版本,第二代版本,第二代HadoopHadoop

14、包含包含包含包含0.23.x0.23.x和和和和2.x2.x两个版本,两个版本,两个版本,两个版本,2.x2.x本版比本版比本版比本版比0.23.x0.23.x版本增加了版本增加了版本增加了版本增加了NameNode HANameNode HA和和和和Wire-compatibilityWire-compatibility两个特性,版本两个特性,版本两个特性,版本两个特性,版本发展如图发展如图发展如图发展如图6.16.1所示。所示。所示。所示。图6.1Hadoop本版发展路线7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.16.1HadoopHadoop

15、概述概述ppHadoopHadoop与与与与MPIMPI在数据处理上的在数据处理上的在数据处理上的在数据处理上的差异差异差异差异主要体现在数据存储与数据处理在主要体现在数据存储与数据处理在主要体现在数据存储与数据处理在主要体现在数据存储与数据处理在系统中位置不同,系统中位置不同,系统中位置不同,系统中位置不同,MPIMPI是计算与存储分离,是计算与存储分离,是计算与存储分离,是计算与存储分离,HadoopHadoop是计算向存储迁移,是计算向存储迁移,是计算向存储迁移,是计算向存储迁移,如图如图如图如图6.26.2所示。所示。所示。所示。图6.2Hadoop与MPI在数据处理上的差异7/25/

16、2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.16.1HadoopHadoop概述概述pp在在在在MPIMPIMPIMPI中数据存储的节点和数据处理的节点往往是不同的,一般中数据存储的节点和数据处理的节点往往是不同的,一般中数据存储的节点和数据处理的节点往往是不同的,一般中数据存储的节点和数据处理的节点往往是不同的,一般在每次计算开始时在每次计算开始时在每次计算开始时在每次计算开始时MPIMPIMPIMPI需要从数据存储节点读取需要处理的数据需要从数据存储节点读取需要处理的数据需要从数据存储节点读取需要处理的数据需要从数据存储节点读取需要处理的数据分配给各个计算

17、节点对数据进行处理,因此分配给各个计算节点对数据进行处理,因此分配给各个计算节点对数据进行处理,因此分配给各个计算节点对数据进行处理,因此MPIMPIMPIMPI中数据存储和数中数据存储和数中数据存储和数中数据存储和数据处理是分离的。据处理是分离的。据处理是分离的。据处理是分离的。pp对于计算密集型的应用对于计算密集型的应用对于计算密集型的应用对于计算密集型的应用MPIMPIMPIMPI能表现出良好的性能,但对于处理能表现出良好的性能,但对于处理能表现出良好的性能,但对于处理能表现出良好的性能,但对于处理TBTBTBTB级数据的数据密集型应用由于网络数据传输速度很慢,级数据的数据密集型应用由于

18、网络数据传输速度很慢,级数据的数据密集型应用由于网络数据传输速度很慢,级数据的数据密集型应用由于网络数据传输速度很慢,MPIMPIMPIMPI的性的性的性的性能会大大降低,甚至会到不可忍受的地步,所以对于构建在能会大大降低,甚至会到不可忍受的地步,所以对于构建在能会大大降低,甚至会到不可忍受的地步,所以对于构建在能会大大降低,甚至会到不可忍受的地步,所以对于构建在MPIMPIMPIMPI上的并行计算系统网络通讯速度一直是一个重要的性能指标,用上的并行计算系统网络通讯速度一直是一个重要的性能指标,用上的并行计算系统网络通讯速度一直是一个重要的性能指标,用上的并行计算系统网络通讯速度一直是一个重要

19、的性能指标,用“计算换通信计算换通信计算换通信计算换通信”也是也是也是也是MPIMPIMPIMPI并行程序设计中的基本原则。并行程序设计中的基本原则。并行程序设计中的基本原则。并行程序设计中的基本原则。7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.16.1HadoopHadoop概述概述pp在在在在HadoopHadoopHadoopHadoop中由于有中由于有中由于有中由于有HDFSHDFSHDFSHDFS文件系统的支持,数据是分布式存文件系统的支持,数据是分布式存文件系统的支持,数据是分布式存文件系统的支持,数据是分布式存储在各个节点的,计算时各节

20、点读取存储在自己节点的数储在各个节点的,计算时各节点读取存储在自己节点的数储在各个节点的,计算时各节点读取存储在自己节点的数储在各个节点的,计算时各节点读取存储在自己节点的数据进行处理,从而避免了大量数据在网络上的传递,实现据进行处理,从而避免了大量数据在网络上的传递,实现据进行处理,从而避免了大量数据在网络上的传递,实现据进行处理,从而避免了大量数据在网络上的传递,实现“计算向存储的迁移计算向存储的迁移计算向存储的迁移计算向存储的迁移”。7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.26.2HDFSHDFSppHadoopHadoopHadoopHa

21、doop系统实现对大数据的自动并行处理,是一种数据并行方法,系统实现对大数据的自动并行处理,是一种数据并行方法,系统实现对大数据的自动并行处理,是一种数据并行方法,系统实现对大数据的自动并行处理,是一种数据并行方法,这种方法实现自动并行处理时需要对数据进行划分,而对数据的这种方法实现自动并行处理时需要对数据进行划分,而对数据的这种方法实现自动并行处理时需要对数据进行划分,而对数据的这种方法实现自动并行处理时需要对数据进行划分,而对数据的划分在划分在划分在划分在HadoopHadoopHadoopHadoop系统中从数据的存储就开始了,因此文件系统是系统中从数据的存储就开始了,因此文件系统是系统

22、中从数据的存储就开始了,因此文件系统是系统中从数据的存储就开始了,因此文件系统是HadoopHadoopHadoopHadoop系统的重要组成部分,也是系统的重要组成部分,也是系统的重要组成部分,也是系统的重要组成部分,也是HadoopHadoopHadoopHadoop实现自动并行框架的基实现自动并行框架的基实现自动并行框架的基实现自动并行框架的基础。础。础。础。HadoopHadoopHadoopHadoop的文件系统称为的文件系统称为的文件系统称为的文件系统称为HDFSHDFSHDFSHDFS(Hadoop Distributed File Hadoop Distributed File

23、 Hadoop Distributed File Hadoop Distributed File SystemSystemSystemSystem)。)。)。)。7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.2.16.2.1HDFSHDFS文件系统的原型文件系统的原型GFSGFSppHadoopHadoop中的中的中的中的HDFSHDFS原型来自原型来自原型来自原型来自Google Google 文件系统文件系统文件系统文件系统(Google File SystemGoogle File System,GFSGFS),为了满足),为了满足),为了满足)

24、,为了满足GoogleGoogle迅速增长的数据处理要求,迅速增长的数据处理要求,迅速增长的数据处理要求,迅速增长的数据处理要求,GoogleGoogle设计并实现了设计并实现了设计并实现了设计并实现了GFSGFS。ppGoogleGoogle文件系统是一个可扩展的分布式文件系统,用于对大量数据进行访问文件系统是一个可扩展的分布式文件系统,用于对大量数据进行访问文件系统是一个可扩展的分布式文件系统,用于对大量数据进行访问文件系统是一个可扩展的分布式文件系统,用于对大量数据进行访问的大型、分布式应用。的大型、分布式应用。的大型、分布式应用。的大型、分布式应用。pp它运行于廉价的普通硬件上,但可以

25、提供容错功能。它可以给大量的用户提它运行于廉价的普通硬件上,但可以提供容错功能。它可以给大量的用户提它运行于廉价的普通硬件上,但可以提供容错功能。它可以给大量的用户提它运行于廉价的普通硬件上,但可以提供容错功能。它可以给大量的用户提供总体性能较高的服务,也可以提供容错功能。供总体性能较高的服务,也可以提供容错功能。供总体性能较高的服务,也可以提供容错功能。供总体性能较高的服务,也可以提供容错功能。pp我们认为我们认为我们认为我们认为GFSGFS是一种面向不可信服务器节点而设计的文件系统。是一种面向不可信服务器节点而设计的文件系统。是一种面向不可信服务器节点而设计的文件系统。是一种面向不可信服务

26、器节点而设计的文件系统。pp谷歌谷歌谷歌谷歌“ “三宝三宝三宝三宝” ”是是是是“GoogleGoogle文件系统文件系统文件系统文件系统”、“BigTableBigTable大表大表大表大表”、“MapReduceMapReduce算法算法算法算法”,有了自己的文件系统,谷歌就可以有效地组织庞大的数据、服务器和存,有了自己的文件系统,谷歌就可以有效地组织庞大的数据、服务器和存,有了自己的文件系统,谷歌就可以有效地组织庞大的数据、服务器和存,有了自己的文件系统,谷歌就可以有效地组织庞大的数据、服务器和存储,并用它们工作。作为谷歌储,并用它们工作。作为谷歌储,并用它们工作。作为谷歌储,并用它们工

27、作。作为谷歌“三宝三宝三宝三宝”的其中之一,的其中之一,的其中之一,的其中之一,GFSGFSGFSGFS的技术优势不言而喻。的技术优势不言而喻。的技术优势不言而喻。的技术优势不言而喻。7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.2.16.2.1HDFSHDFS文件系统的原型文件系统的原型GFSGFSppGFSGFS为分布式结构,它是一个为分布式结构,它是一个为分布式结构,它是一个为分布式结构,它是一个高度容错网络文件系统高度容错网络文件系统高度容错网络文件系统高度容错网络文件系统,主要由一个,主要由一个,主要由一个,主要由一个MasterMaster

28、(主)和众多(主)和众多(主)和众多(主)和众多chunkserverchunkserver(大块设备)构成的,体系结构如图(大块设备)构成的,体系结构如图(大块设备)构成的,体系结构如图(大块设备)构成的,体系结构如图6.36.3所示。所示。所示。所示。图6.3GFS的体系结构7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.2.16.2.1HDFSHDFS文件系统的原型文件系统的原型GFSGFSpp下面简单描述一下下面简单描述一下下面简单描述一下下面简单描述一下GFSGFSGFSGFS的工作过程的工作过程的工作过程的工作过程。(1 1)客户端使用固定大

29、小的块将应用程序指定的文件名和字节偏)客户端使用固定大小的块将应用程序指定的文件名和字节偏)客户端使用固定大小的块将应用程序指定的文件名和字节偏)客户端使用固定大小的块将应用程序指定的文件名和字节偏移转换成文件的一个块索引,向移转换成文件的一个块索引,向移转换成文件的一个块索引,向移转换成文件的一个块索引,向MasterMaster发送包含文件名和块索发送包含文件名和块索发送包含文件名和块索发送包含文件名和块索引的请求。引的请求。引的请求。引的请求。(2 2)MasterMaster收到客户端发来的请求,收到客户端发来的请求,收到客户端发来的请求,收到客户端发来的请求,MasterMaster

30、向块服务器发出指示,向块服务器发出指示,向块服务器发出指示,向块服务器发出指示,同时时刻监控众多同时时刻监控众多同时时刻监控众多同时时刻监控众多chunkserverchunkserver的状态。的状态。的状态。的状态。chunkserverchunkserver缓存缓存缓存缓存MasterMaster从客户端收到的文件名和块索引等信息。从客户端收到的文件名和块索引等信息。从客户端收到的文件名和块索引等信息。从客户端收到的文件名和块索引等信息。7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.2.16.2.1HDFSHDFS文件系统的原型文件系统的原型GF

31、SGFS(3 3)MasterMaster通过和通过和通过和通过和chunkserverchunkserver的交互,向客户端发送的交互,向客户端发送的交互,向客户端发送的交互,向客户端发送chunk-handlechunk-handle和副本位置。其中文件被分成若干个块,而每个块都是由一个不变和副本位置。其中文件被分成若干个块,而每个块都是由一个不变和副本位置。其中文件被分成若干个块,而每个块都是由一个不变和副本位置。其中文件被分成若干个块,而每个块都是由一个不变的、全局惟一的的、全局惟一的的、全局惟一的的、全局惟一的6464位的位的位的位的chunk-handlechunk-handle标

32、识。标识。标识。标识。HandleHandle是由是由是由是由MasterMaster在在在在块创建时分配的。而出于安全性考虑,每一个文件块都要被复制到块创建时分配的。而出于安全性考虑,每一个文件块都要被复制到块创建时分配的。而出于安全性考虑,每一个文件块都要被复制到块创建时分配的。而出于安全性考虑,每一个文件块都要被复制到多个多个多个多个chunkserverchunkserver上,一般默认上,一般默认上,一般默认上,一般默认3 3个副本。个副本。个副本。个副本。(4 4)客户端向其中的一个副本发出请求,请求指定了)客户端向其中的一个副本发出请求,请求指定了)客户端向其中的一个副本发出请求

33、,请求指定了)客户端向其中的一个副本发出请求,请求指定了chunk chunk handlehandle(chunkserverchunkserver以以以以chunk handlechunk handle标识标识标识标识chunkchunk)和块内的一个)和块内的一个)和块内的一个)和块内的一个字节区间。字节区间。字节区间。字节区间。(5 5)客户端从)客户端从)客户端从)客户端从chunkserverchunkserver获得块数据,任务完成。获得块数据,任务完成。获得块数据,任务完成。获得块数据,任务完成。7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.or

34、g6.2.16.2.1HDFSHDFS文件系统的原型文件系统的原型GFSGFSpp通常通常通常通常ClientClientClientClient可以在一个请求中询问多个可以在一个请求中询问多个可以在一个请求中询问多个可以在一个请求中询问多个chunkchunkchunkchunk的地址,而的地址,而的地址,而的地址,而MasterMasterMasterMaster也可以很快回应这些请求。也可以很快回应这些请求。也可以很快回应这些请求。也可以很快回应这些请求。ppGFSGFSGFSGFS是可以被多个用户同时访问的,一般情况下,是可以被多个用户同时访问的,一般情况下,是可以被多个用户同时访问的

35、,一般情况下,是可以被多个用户同时访问的,一般情况下,ApplicationApplicationApplicationApplication和和和和chunkserverchunkserverchunkserverchunkserver是可以在同一台机子上的,是可以在同一台机子上的,是可以在同一台机子上的,是可以在同一台机子上的,主要的数据流量是通过主要的数据流量是通过主要的数据流量是通过主要的数据流量是通过ApplicationApplicationApplicationApplication和和和和chunkserverchunkserverchunkserverchunkserver之

36、间,之间,之间,之间,数据访问的本地性极大地减少了数据访问的本地性极大地减少了数据访问的本地性极大地减少了数据访问的本地性极大地减少了ApplicationApplicationApplicationApplication与与与与MasterMasterMasterMaster之之之之间的交互访问,减少了间的交互访问,减少了间的交互访问,减少了间的交互访问,减少了MasterMasterMasterMaster的负荷量,提高了文件系的负荷量,提高了文件系的负荷量,提高了文件系的负荷量,提高了文件系统的性能。统的性能。统的性能。统的性能。7/25/2024并行计算实验室并行计算实验室 http:

37、/www.qhoa.org6.2.16.2.1HDFSHDFS文件系统的原型文件系统的原型GFSGFSpp客户端从来不会从客户端从来不会从客户端从来不会从客户端从来不会从MasterMasterMasterMaster读和写文件数据。客户端只是读和写文件数据。客户端只是读和写文件数据。客户端只是读和写文件数据。客户端只是询问询问询问询问MasterMasterMasterMaster它应该和哪个它应该和哪个它应该和哪个它应该和哪个 chunkserver chunkserver chunkserver chunkserver联系。联系。联系。联系。ClientClientClientClien

38、t在在在在一段限定的时间内将这些信息缓存,在后续的操作中客一段限定的时间内将这些信息缓存,在后续的操作中客一段限定的时间内将这些信息缓存,在后续的操作中客一段限定的时间内将这些信息缓存,在后续的操作中客户端直接和户端直接和户端直接和户端直接和chunkserverchunkserverchunkserverchunkserver交互。由于交互。由于交互。由于交互。由于MasterMasterMasterMaster对于读和写的对于读和写的对于读和写的对于读和写的操作极少,所以极大地减小了操作极少,所以极大地减小了操作极少,所以极大地减小了操作极少,所以极大地减小了MasterMasterMas

39、terMaster的工作负荷,真正的工作负荷,真正的工作负荷,真正的工作负荷,真正提高了提高了提高了提高了MasterMasterMasterMaster的利用性能。的利用性能。的利用性能。的利用性能。ppMasterMasterMasterMaster保存着三类元数据(保存着三类元数据(保存着三类元数据(保存着三类元数据(metadatametadatametadatametadata):文件名和块的):文件名和块的):文件名和块的):文件名和块的名字空间、从文件到块的映射、副本位置。所有的名字空间、从文件到块的映射、副本位置。所有的名字空间、从文件到块的映射、副本位置。所有的名字空间、从文

40、件到块的映射、副本位置。所有的metadatametadatametadatametadata都放在内存中。操作日志的引入可以更简单、都放在内存中。操作日志的引入可以更简单、都放在内存中。操作日志的引入可以更简单、都放在内存中。操作日志的引入可以更简单、更可靠地更新更可靠地更新更可靠地更新更可靠地更新MasterMasterMasterMaster的信息。的信息。的信息。的信息。7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.2.16.2.1HDFSHDFS文件系统的原型文件系统的原型GFSGFSpp为为为为GFSGFSGFSGFS的控制和神经系统,副本

41、为的控制和神经系统,副本为的控制和神经系统,副本为的控制和神经系统,副本为MasterMasterMasterMaster的备份,的备份,的备份,的备份,ChunkChunkChunkChunk主要用来和主要用来和主要用来和主要用来和用户交换数据。网络中的主机瘫痪,不会对整个系统造成大的影响,用户交换数据。网络中的主机瘫痪,不会对整个系统造成大的影响,用户交换数据。网络中的主机瘫痪,不会对整个系统造成大的影响,用户交换数据。网络中的主机瘫痪,不会对整个系统造成大的影响,替换上去的主机会自动重建数据。即使替换上去的主机会自动重建数据。即使替换上去的主机会自动重建数据。即使替换上去的主机会自动重建

42、数据。即使MasterMasterMasterMaster瘫痪,也会有瘫痪,也会有瘫痪,也会有瘫痪,也会有ShadowShadowShadowShadow作为替补,并且作为替补,并且作为替补,并且作为替补,并且ShadowShadowShadowShadow在一定时候也会充当在一定时候也会充当在一定时候也会充当在一定时候也会充当MasterMasterMasterMaster来提供控制和数来提供控制和数来提供控制和数来提供控制和数据交换。据交换。据交换。据交换。GoogleGoogleGoogleGoogle每天有大量的硬盘损坏,但是由于有每天有大量的硬盘损坏,但是由于有每天有大量的硬盘损坏,

43、但是由于有每天有大量的硬盘损坏,但是由于有GFSGFSGFSGFS,这些硬盘,这些硬盘,这些硬盘,这些硬盘的损坏是允许的。的损坏是允许的。的损坏是允许的。的损坏是允许的。pp有人形象地比喻:分布式的文件系统被分块为很多细胞单元,一旦有人形象地比喻:分布式的文件系统被分块为很多细胞单元,一旦有人形象地比喻:分布式的文件系统被分块为很多细胞单元,一旦有人形象地比喻:分布式的文件系统被分块为很多细胞单元,一旦细胞损坏,神经系统(细胞损坏,神经系统(细胞损坏,神经系统(细胞损坏,神经系统(MasterMasterMasterMaster)会迅速发现并有相应的冗余措施来)会迅速发现并有相应的冗余措施来)

44、会迅速发现并有相应的冗余措施来)会迅速发现并有相应的冗余措施来使系统正常运行,这些细胞可以看作很多使系统正常运行,这些细胞可以看作很多使系统正常运行,这些细胞可以看作很多使系统正常运行,这些细胞可以看作很多GFSGFSGFSGFS主机。这一工作方式就主机。这一工作方式就主机。这一工作方式就主机。这一工作方式就是人类大脑的工作方式。是人类大脑的工作方式。是人类大脑的工作方式。是人类大脑的工作方式。7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.2.16.2.1HDFSHDFS文件系统的原型文件系统的原型GFSGFSpp当然,当然,当然,当然,作为作为作为作

45、为GoogleGoogleGoogleGoogle的技术基石,的技术基石,的技术基石,的技术基石,GFSGFSGFSGFS可以给大量的用户提供总体性能较高可以给大量的用户提供总体性能较高可以给大量的用户提供总体性能较高可以给大量的用户提供总体性能较高的服务,的服务,的服务,的服务,具有以下优势具有以下优势具有以下优势具有以下优势: : : :(1 1 1 1)GoogleGoogleGoogleGoogle采用的存储方法是大量、分散的普通廉价服务器的存储方式,极大降低了采用的存储方法是大量、分散的普通廉价服务器的存储方式,极大降低了采用的存储方法是大量、分散的普通廉价服务器的存储方式,极大降低

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

47、,它的数据同时会在多个)容错能力强,它的数据同时会在多个)容错能力强,它的数据同时会在多个chunkserverchunkserverchunkserverchunkserver上进行备份,具有相当强的容错上进行备份,具有相当强的容错上进行备份,具有相当强的容错上进行备份,具有相当强的容错性;性;性;性;(5 5 5 5)高效访问,它是通过)高效访问,它是通过)高效访问,它是通过)高效访问,它是通过Big tableBig tableBig tableBig table来实现的,它是来实现的,它是来实现的,它是来实现的,它是Google File SystemGoogle File Syste

48、mGoogle File SystemGoogle File System上层的结构。上层的结构。上层的结构。上层的结构。GFSGFSGFSGFS在实现分布式文件系统的做法上面很多都是简单的,但是确实非常高效。在实现分布式文件系统的做法上面很多都是简单的,但是确实非常高效。在实现分布式文件系统的做法上面很多都是简单的,但是确实非常高效。在实现分布式文件系统的做法上面很多都是简单的,但是确实非常高效。(6 6 6 6)GFSGFSGFSGFS相对于相对于相对于相对于HDFSHDFSHDFSHDFS稳定性是无庸置疑的,并在稳定性是无庸置疑的,并在稳定性是无庸置疑的,并在稳定性是无庸置疑的,并在Go

49、ogleGoogleGoogleGoogle系统中得到了采用且稳定的运行。系统中得到了采用且稳定的运行。系统中得到了采用且稳定的运行。系统中得到了采用且稳定的运行。7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.2.26.2.2HDFSHDFS文件的基本结构文件的基本结构ppHDFSHDFS是一种是一种是一种是一种典型典型典型典型的的的的主从式的分布式文件系统主从式的分布式文件系统主从式的分布式文件系统主从式的分布式文件系统,该文件系统完全是仿照,该文件系统完全是仿照,该文件系统完全是仿照,该文件系统完全是仿照GoogleGoogle的的的的GFSGFS

50、文件系统而设计的,文件系统而设计的,文件系统而设计的,文件系统而设计的,HDFSHDFS的架构如图的架构如图的架构如图的架构如图6.46.4所示。所示。所示。所示。图6.4HDFS的架构7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.2.26.2.2HDFSHDFS文件的基本结构文件的基本结构ppHDFSHDFS由一个名叫由一个名叫由一个名叫由一个名叫NamenodeNamenode的主节点和多个名叫的主节点和多个名叫的主节点和多个名叫的主节点和多个名叫DatanodeDatanode的子节的子节的子节的子节点组成。点组成。点组成。点组成。ppNamen

51、odeNamenode存储着文件系统的元数据,这些元数据包括文件系统的存储着文件系统的元数据,这些元数据包括文件系统的存储着文件系统的元数据,这些元数据包括文件系统的存储着文件系统的元数据,这些元数据包括文件系统的名字空间等,向用户映射文件系统,并负责管理文件的存储等服务,名字空间等,向用户映射文件系统,并负责管理文件的存储等服务,名字空间等,向用户映射文件系统,并负责管理文件的存储等服务,名字空间等,向用户映射文件系统,并负责管理文件的存储等服务,但实际的数据并不存放在但实际的数据并不存放在但实际的数据并不存放在但实际的数据并不存放在NamenodeNamenode。NamenodeName

52、node的作用就像是文的作用就像是文的作用就像是文的作用就像是文件系统的总指挥,并向访问文件系统的客户机提供文件系统的映射,件系统的总指挥,并向访问文件系统的客户机提供文件系统的映射,件系统的总指挥,并向访问文件系统的客户机提供文件系统的映射,件系统的总指挥,并向访问文件系统的客户机提供文件系统的映射,这种做法并不是这种做法并不是这种做法并不是这种做法并不是GoogleGoogle或或或或HadoopHadoop的创新,这和传统并行计算系统的创新,这和传统并行计算系统的创新,这和传统并行计算系统的创新,这和传统并行计算系统中的单一系统映像(中的单一系统映像(中的单一系统映像(中的单一系统映像(

53、Single System ImageSingle System Image)的做法相同。)的做法相同。)的做法相同。)的做法相同。ppHDFSHDFS中的中的中的中的DatanodeDatanode用于实际对数据的存放,对用于实际对数据的存放,对用于实际对数据的存放,对用于实际对数据的存放,对DatanodeDatanode上数据上数据上数据上数据的访问并不通过的访问并不通过的访问并不通过的访问并不通过NamemodeNamemode,而是与用户直接建立数据通信。,而是与用户直接建立数据通信。,而是与用户直接建立数据通信。,而是与用户直接建立数据通信。ppHadoopHadoop启动后我们能

54、看到启动后我们能看到启动后我们能看到启动后我们能看到NamenodeNamenode和和和和DatanodeDatanode这两个进程。这两个进程。这两个进程。这两个进程。7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.2.26.2.2HDFSHDFS文件的基本结构文件的基本结构ppHDFSHDFS的工作过程的工作过程的工作过程的工作过程是这样的:是这样的:是这样的:是这样的:用户请求创建文件的指令由用户请求创建文件的指令由用户请求创建文件的指令由用户请求创建文件的指令由NamenodeNamenode进行接收,进行接收,进行接收,进行接收,Nameno

55、deNamenode将存储数据的将存储数据的将存储数据的将存储数据的DatanodeDatanode的的的的IPIP返回给用户,并通知其他接收副本返回给用户,并通知其他接收副本返回给用户,并通知其他接收副本返回给用户,并通知其他接收副本的的的的DatanodeDatanode,由用户直接与,由用户直接与,由用户直接与,由用户直接与DatanodeDatanode进行数据传送。进行数据传送。进行数据传送。进行数据传送。NamenodeNamenode同时存储相关的元数据。同时存储相关的元数据。同时存储相关的元数据。同时存储相关的元数据。整个文件系统采用标准整个文件系统采用标准整个文件系统采用标准

56、整个文件系统采用标准TCP/IPTCP/IP协议通信,实际是架设在协议通信,实际是架设在协议通信,实际是架设在协议通信,实际是架设在LinuxLinux文文文文件系统上的一个上层文件系统。件系统上的一个上层文件系统。件系统上的一个上层文件系统。件系统上的一个上层文件系统。HDFSHDFS上的一个典型文件大小一上的一个典型文件大小一上的一个典型文件大小一上的一个典型文件大小一般都在般都在般都在般都在GG字节至字节至字节至字节至T T字节。字节。字节。字节。7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.2.26.2.2HDFSHDFS文件的基本结构文件的基

57、本结构pp主从式是云计算系统的一种典型架构方法,系统通过主节主从式是云计算系统的一种典型架构方法,系统通过主节主从式是云计算系统的一种典型架构方法,系统通过主节主从式是云计算系统的一种典型架构方法,系统通过主节点屏蔽底层的复杂结构,并向用户提供方便的文件目录映点屏蔽底层的复杂结构,并向用户提供方便的文件目录映点屏蔽底层的复杂结构,并向用户提供方便的文件目录映点屏蔽底层的复杂结构,并向用户提供方便的文件目录映射。有些改进的主从式架构可能会采用分层的主从式方法,射。有些改进的主从式架构可能会采用分层的主从式方法,射。有些改进的主从式架构可能会采用分层的主从式方法,射。有些改进的主从式架构可能会采用

58、分层的主从式方法,以减轻主节点的负荷。以减轻主节点的负荷。以减轻主节点的负荷。以减轻主节点的负荷。7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.2.36.2.3HDFSHDFS的存储过程的存储过程ppHDFSHDFSHDFSHDFS在对一个文件进行存储时有两个重要的策略在对一个文件进行存储时有两个重要的策略在对一个文件进行存储时有两个重要的策略在对一个文件进行存储时有两个重要的策略:一个是一个是一个是一个是副本策略副本策略副本策略副本策略,一个是,一个是,一个是,一个是分块策略分块策略分块策略分块策略。副本策略保证了文件存储的高可靠性;副本策略保证了文

59、件存储的高可靠性;副本策略保证了文件存储的高可靠性;副本策略保证了文件存储的高可靠性;分块策略保证数据并发读写的效率并且是分块策略保证数据并发读写的效率并且是分块策略保证数据并发读写的效率并且是分块策略保证数据并发读写的效率并且是MapReduceMapReduceMapReduceMapReduce实现并行数据处理的基础。实现并行数据处理的基础。实现并行数据处理的基础。实现并行数据处理的基础。7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.2.36.2.3HDFSHDFS的存储过程的存储过程ppHDFSHDFSHDFSHDFS的分块策略的分块策略的分块

60、策略的分块策略:通常:通常:通常:通常HDFSHDFSHDFSHDFS在存储一个文件会将文件切为在存储一个文件会将文件切为在存储一个文件会将文件切为在存储一个文件会将文件切为64MB64MB64MB64MB大小的块来进行存储,数据块会被分别存储在不同的大小的块来进行存储,数据块会被分别存储在不同的大小的块来进行存储,数据块会被分别存储在不同的大小的块来进行存储,数据块会被分别存储在不同的DatanodeDatanodeDatanodeDatanode节点上,这一过程其实就是一种数据任务的切分节点上,这一过程其实就是一种数据任务的切分节点上,这一过程其实就是一种数据任务的切分节点上,这一过程其实

61、就是一种数据任务的切分过程,在后面对数据进行过程,在后面对数据进行过程,在后面对数据进行过程,在后面对数据进行MapReduceMapReduceMapReduceMapReduce操作时十分重要,同时操作时十分重要,同时操作时十分重要,同时操作时十分重要,同时数据被分块存储后在数据读写时能实现对数据的并发读写,数据被分块存储后在数据读写时能实现对数据的并发读写,数据被分块存储后在数据读写时能实现对数据的并发读写,数据被分块存储后在数据读写时能实现对数据的并发读写,提高数据读写效率。提高数据读写效率。提高数据读写效率。提高数据读写效率。ppHDFSHDFSHDFSHDFS采用采用采用采用64M

62、B64MB64MB64MB这样较大的文件这样较大的文件这样较大的文件这样较大的文件分块策略分块策略分块策略分块策略有以下有以下有以下有以下3 3 3 3个个个个优点优点优点优点:(1 1 1 1)降低客户端与主服务器的交互代价;)降低客户端与主服务器的交互代价;)降低客户端与主服务器的交互代价;)降低客户端与主服务器的交互代价;(2 2 2 2)降低网络负载;)降低网络负载;)降低网络负载;)降低网络负载;(3 3 3 3)减少主服务器中元数据的大小。)减少主服务器中元数据的大小。)减少主服务器中元数据的大小。)减少主服务器中元数据的大小。7/25/2024并行计算实验室并行计算实验室 htt

63、p:/www.qhoa.org6.2.36.2.3HDFSHDFS的存储过程的存储过程ppHDFSHDFS的副本策略:的副本策略:ppHDFSHDFSHDFSHDFS对数据块典型的副本策略为对数据块典型的副本策略为对数据块典型的副本策略为对数据块典型的副本策略为3 3 3 3个副本,个副本,个副本,个副本,第一个副本存放在本地节点,第一个副本存放在本地节点,第一个副本存放在本地节点,第一个副本存放在本地节点,第二个副本存放在同一个机架的另一个节点,第二个副本存放在同一个机架的另一个节点,第二个副本存放在同一个机架的另一个节点,第二个副本存放在同一个机架的另一个节点,第三个本副本存放在不同机架上

64、的另一个节点。第三个本副本存放在不同机架上的另一个节点。第三个本副本存放在不同机架上的另一个节点。第三个本副本存放在不同机架上的另一个节点。pp这样的副本策略保证了在这样的副本策略保证了在这样的副本策略保证了在这样的副本策略保证了在HDFSHDFSHDFSHDFS文件系统中存储的文件具有文件系统中存储的文件具有文件系统中存储的文件具有文件系统中存储的文件具有很高的可靠性。很高的可靠性。很高的可靠性。很高的可靠性。7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.2.36.2.3HDFSHDFS的存储过程的存储过程pp一个文件写入一个文件写入一个文件写入一个

65、文件写入HDFSHDFSHDFSHDFS的基本过程的基本过程的基本过程的基本过程可以描述如下:可以描述如下:可以描述如下:可以描述如下:写入操作首先由写入操作首先由写入操作首先由写入操作首先由NamenodeNamenodeNamenodeNamenode为该文件创建一个新的记录,该记录为为该文件创建一个新的记录,该记录为为该文件创建一个新的记录,该记录为为该文件创建一个新的记录,该记录为文件分配存储节点包括文件的分块存储信息,在写入时系统会对文件分配存储节点包括文件的分块存储信息,在写入时系统会对文件分配存储节点包括文件的分块存储信息,在写入时系统会对文件分配存储节点包括文件的分块存储信息,

66、在写入时系统会对文件进行分块,文件写入的客户端获得存储位置的信息后直接与文件进行分块,文件写入的客户端获得存储位置的信息后直接与文件进行分块,文件写入的客户端获得存储位置的信息后直接与文件进行分块,文件写入的客户端获得存储位置的信息后直接与指定的指定的指定的指定的DatanodeDatanodeDatanodeDatanode进行数据通信,将文件块按进行数据通信,将文件块按进行数据通信,将文件块按进行数据通信,将文件块按NamenodeNamenodeNamenodeNamenode分配的位置分配的位置分配的位置分配的位置写入指定的写入指定的写入指定的写入指定的DatanodeDatanode

67、DatanodeDatanode,数据块在写入时不再通过,数据块在写入时不再通过,数据块在写入时不再通过,数据块在写入时不再通过NamenodeNamenodeNamenodeNamenode,因此,因此,因此,因此NamenodeNamenodeNamenodeNamenode不会成为数据通信的瓶颈。不会成为数据通信的瓶颈。不会成为数据通信的瓶颈。不会成为数据通信的瓶颈。7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.36.3MapReduceMapReduce编程框架编程框架 pp在云计算和大数据技术领域被广泛提到并被成功应用的一项技术就在云计算和大

68、数据技术领域被广泛提到并被成功应用的一项技术就在云计算和大数据技术领域被广泛提到并被成功应用的一项技术就在云计算和大数据技术领域被广泛提到并被成功应用的一项技术就是是是是MapReduceMapReduceMapReduceMapReduce。MapReduceMapReduceMapReduceMapReduce是是是是GoogleGoogleGoogleGoogle系统和系统和系统和系统和HadoopHadoopHadoopHadoop系统中的一项核心系统中的一项核心系统中的一项核心系统中的一项核心技术。技术。技术。技术。pp6.3.16.3.16.3.16.3.1MapReduceMap

69、ReduceMapReduceMapReduce的发展历史的发展历史的发展历史的发展历史MapReduceMapReduceMapReduceMapReduce出现的历史要追述到出现的历史要追述到出现的历史要追述到出现的历史要追述到1956195619561956年,图灵奖获得者著名的人工智能专家年,图灵奖获得者著名的人工智能专家年,图灵奖获得者著名的人工智能专家年,图灵奖获得者著名的人工智能专家McCarthyMcCarthyMcCarthyMcCarthy首次提出了首次提出了首次提出了首次提出了LISPLISPLISPLISP语言的构想,而在语言的构想,而在语言的构想,而在语言的构想,而在

70、LISPLISPLISPLISP语言中就包含了现在我们所采用语言中就包含了现在我们所采用语言中就包含了现在我们所采用语言中就包含了现在我们所采用的的的的MapReduce MapReduce MapReduce MapReduce 功能。功能。功能。功能。LISPLISPLISPLISP语言是一种用于人工智能领域的语言,在人工智能领域语言是一种用于人工智能领域的语言,在人工智能领域语言是一种用于人工智能领域的语言,在人工智能领域语言是一种用于人工智能领域的语言,在人工智能领域有很多的应用,有很多的应用,有很多的应用,有很多的应用,LISPLISPLISPLISP在在在在195619561956

71、1956年设计时主要是希望能有效地进行年设计时主要是希望能有效地进行年设计时主要是希望能有效地进行年设计时主要是希望能有效地进行“符号运算符号运算符号运算符号运算”。LISPLISPLISPLISP是一种表处理语言,其逻辑简单但结构不同于其他的高级语言。是一种表处理语言,其逻辑简单但结构不同于其他的高级语言。是一种表处理语言,其逻辑简单但结构不同于其他的高级语言。是一种表处理语言,其逻辑简单但结构不同于其他的高级语言。1960196019601960年,年,年,年,McCarthyMcCarthyMcCarthyMcCarthy更是极有预见性地提出:更是极有预见性地提出:更是极有预见性地提出:

72、更是极有预见性地提出:“今后计算机将会作为公共设施提供今后计算机将会作为公共设施提供今后计算机将会作为公共设施提供今后计算机将会作为公共设施提供给公众给公众给公众给公众”,这一观点已与现在人们对云计算的定义极为相近了,所以我们把,这一观点已与现在人们对云计算的定义极为相近了,所以我们把,这一观点已与现在人们对云计算的定义极为相近了,所以我们把,这一观点已与现在人们对云计算的定义极为相近了,所以我们把McCarthyMcCarthyMcCarthyMcCarthy称为称为称为称为“云计算之父云计算之父云计算之父云计算之父”。MapReduceMapReduceMapReduceMapReduce

73、在在在在McCarthyMcCarthyMcCarthyMcCarthy提出时并没有考虑到其在分布式系统和大数据上会有如此提出时并没有考虑到其在分布式系统和大数据上会有如此提出时并没有考虑到其在分布式系统和大数据上会有如此提出时并没有考虑到其在分布式系统和大数据上会有如此大的应用前景,只是作为一种函数操作来定义的。大的应用前景,只是作为一种函数操作来定义的。大的应用前景,只是作为一种函数操作来定义的。大的应用前景,只是作为一种函数操作来定义的。7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.3.16.3.1MapReduceMapReduce的发展历史的

74、发展历史pp2004200420042004年年年年GoogleGoogleGoogleGoogle公司的公司的公司的公司的DeanDeanDeanDean发表文章将发表文章将发表文章将发表文章将MapReduceMapReduceMapReduceMapReduce这一编程模这一编程模这一编程模这一编程模型在分布式系统中的应用进行了介绍,从此型在分布式系统中的应用进行了介绍,从此型在分布式系统中的应用进行了介绍,从此型在分布式系统中的应用进行了介绍,从此MapRuduceMapRuduceMapRuduceMapRuduce分布分布分布分布式编程模型进入了人们的视野。式编程模型进入了人们的视

75、野。式编程模型进入了人们的视野。式编程模型进入了人们的视野。pp可以认为分布式可以认为分布式可以认为分布式可以认为分布式MapReduceMapReduceMapReduceMapReduce是由是由是由是由GoogleGoogleGoogleGoogle公司首先提出的。公司首先提出的。公司首先提出的。公司首先提出的。ppHadoopHadoopHadoopHadoop跟进了跟进了跟进了跟进了GoogleGoogleGoogleGoogle的这一思想,可以认为的这一思想,可以认为的这一思想,可以认为的这一思想,可以认为HadoopHadoopHadoopHadoop是一个是一个是一个是一个开源

76、版本的开源版本的开源版本的开源版本的GoogleGoogleGoogleGoogle系统,正是由于系统,正是由于系统,正是由于系统,正是由于HadoopHadoopHadoopHadoop的跟进才使普通的跟进才使普通的跟进才使普通的跟进才使普通用户得以开发自己的基于用户得以开发自己的基于用户得以开发自己的基于用户得以开发自己的基于MapReduceMapReduceMapReduceMapReduce框架的云计算应用系统。框架的云计算应用系统。框架的云计算应用系统。框架的云计算应用系统。7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.3.26.3.2Ma

77、pReduceMapReduce的基本工作过程的基本工作过程ppMapReduceMapReduceMapReduceMapReduce是一种处理大数据集的编程模式,它借鉴了最早是一种处理大数据集的编程模式,它借鉴了最早是一种处理大数据集的编程模式,它借鉴了最早是一种处理大数据集的编程模式,它借鉴了最早出现在出现在出现在出现在LISPLISPLISPLISP语言和其他函数语言中的语言和其他函数语言中的语言和其他函数语言中的语言和其他函数语言中的mapmapmapmap和和和和reducereducereducereduce操作,操作,操作,操作,MapReduceMapReduceMapRed

78、uceMapReduce的基本过程为:的基本过程为:的基本过程为:的基本过程为:用户通过用户通过用户通过用户通过mapmapmapmap函数处理函数处理函数处理函数处理key/valuekey/valuekey/valuekey/value对,从而产生一系列不同的对,从而产生一系列不同的对,从而产生一系列不同的对,从而产生一系列不同的key/valuekey/valuekey/valuekey/value对,对,对,对,reducereducereducereduce函数将函数将函数将函数将keykeykeykey值相同的值相同的值相同的值相同的key/valuekey/valuekey/va

79、luekey/value对进行合并。对进行合并。对进行合并。对进行合并。现实中的很多处理任务都可以利用这一模型进行描述。通过现实中的很多处理任务都可以利用这一模型进行描述。通过现实中的很多处理任务都可以利用这一模型进行描述。通过现实中的很多处理任务都可以利用这一模型进行描述。通过MapReduceMapReduceMapReduceMapReduce框架能实现基于数据切分的自动并行计算,大大简化框架能实现基于数据切分的自动并行计算,大大简化框架能实现基于数据切分的自动并行计算,大大简化框架能实现基于数据切分的自动并行计算,大大简化了分布式编程的难度,并为在相对廉价的商品化服务器集群系统了分布式

80、编程的难度,并为在相对廉价的商品化服务器集群系统了分布式编程的难度,并为在相对廉价的商品化服务器集群系统了分布式编程的难度,并为在相对廉价的商品化服务器集群系统上实现大规模的数据处理提供了可能。上实现大规模的数据处理提供了可能。上实现大规模的数据处理提供了可能。上实现大规模的数据处理提供了可能。7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.3.26.3.2MapReduceMapReduce的基本工作过程的基本工作过程ppMapReduceMapReduceMapReduceMapReduce的过程其实非常简单,我们用一个实际的例子来说明的过程其实非常

81、简单,我们用一个实际的例子来说明的过程其实非常简单,我们用一个实际的例子来说明的过程其实非常简单,我们用一个实际的例子来说明MapReduceMapReduceMapReduceMapReduce的编程模型。假设我们需要对一个文件的编程模型。假设我们需要对一个文件的编程模型。假设我们需要对一个文件的编程模型。假设我们需要对一个文件example.txtexample.txtexample.txtexample.txt中出中出中出中出现的单词次数进行统计,这就是著名的现的单词次数进行统计,这就是著名的现的单词次数进行统计,这就是著名的现的单词次数进行统计,这就是著名的wordcountwordc

82、ountwordcountwordcount例子,在这个例子例子,在这个例子例子,在这个例子例子,在这个例子中中中中MapReduceMapReduceMapReduceMapReduce的编程模型可以这样来描述:的编程模型可以这样来描述:的编程模型可以这样来描述:的编程模型可以这样来描述:用户需要处理的文件用户需要处理的文件用户需要处理的文件用户需要处理的文件example.txtexample.txtexample.txtexample.txt已被分为多个数据片存储在集已被分为多个数据片存储在集已被分为多个数据片存储在集已被分为多个数据片存储在集群系统中不同的节点上了,用户先使用一个群系统

83、中不同的节点上了,用户先使用一个群系统中不同的节点上了,用户先使用一个群系统中不同的节点上了,用户先使用一个MapMapMapMap函数函数函数函数Map(example.txt, Map(example.txt, Map(example.txt, Map(example.txt, 文件内容文件内容文件内容文件内容) ) ) ),在这个,在这个,在这个,在这个MapMapMapMap函数中函数中函数中函数中keykeykeykey值为值为值为值为example.txtexample.txtexample.txtexample.txt,keykeykeykey通常是指一个具有唯一值的标识,通常是

84、指一个具有唯一值的标识,通常是指一个具有唯一值的标识,通常是指一个具有唯一值的标识,valuevaluevaluevalue值就值就值就值就是是是是example.txtexample.txtexample.txtexample.txt文件中的内容。文件中的内容。文件中的内容。文件中的内容。MapMapMapMap操作程序通常会被分布到存有文件操作程序通常会被分布到存有文件操作程序通常会被分布到存有文件操作程序通常会被分布到存有文件example.txtexample.txtexample.txtexample.txt数据片段的节数据片段的节数据片段的节数据片段的节点上发起,这个点上发起,这个

85、点上发起,这个点上发起,这个MapMapMapMap操作将产生一组中间操作将产生一组中间操作将产生一组中间操作将产生一组中间key/valuekey/valuekey/valuekey/value对(对(对(对(word, word, word, word, countcountcountcount),),),),7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.3.26.3.2MapReduceMapReduce的基本工作过程的基本工作过程这里的这里的这里的这里的wordwordwordword代表出现在文件代表出现在文件代表出现在文件代表出现在文件ex

86、ample.txtexample.txtexample.txtexample.txt片段中的任一个单词,片段中的任一个单词,片段中的任一个单词,片段中的任一个单词,每个每个每个每个MapMapMapMap操作所产生的操作所产生的操作所产生的操作所产生的key/valuekey/valuekey/valuekey/value对只代表对只代表对只代表对只代表example.txtexample.txtexample.txtexample.txt一部分内一部分内一部分内一部分内容的统计值。容的统计值。容的统计值。容的统计值。ReduceReduceReduceReduce函数将接收集群中不同节点函数

87、将接收集群中不同节点函数将接收集群中不同节点函数将接收集群中不同节点MapMapMapMap函数生成的中间函数生成的中间函数生成的中间函数生成的中间key/valuekey/valuekey/valuekey/value对,并将对,并将对,并将对,并将KeyKeyKeyKey相同的相同的相同的相同的key/valuekey/valuekey/valuekey/value对进行合并,在这个例子中对进行合并,在这个例子中对进行合并,在这个例子中对进行合并,在这个例子中ReduceReduceReduceReduce函数将对所有函数将对所有函数将对所有函数将对所有keykeykeykey值相同的值相

88、同的值相同的值相同的valuevaluevaluevalue值进行求和合并,最后输出的值进行求和合并,最后输出的值进行求和合并,最后输出的值进行求和合并,最后输出的key/valuekey/valuekey/valuekey/value对就是(对就是(对就是(对就是(word, countword, countword, countword, count),其中),其中),其中),其中countcountcountcount就是这个单词在就是这个单词在就是这个单词在就是这个单词在文件文件文件文件example.txtexample.txtexample.txtexample.txt中出现的总的

89、次数。中出现的总的次数。中出现的总的次数。中出现的总的次数。7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.3.26.3.2MapReduceMapReduce的基本工作过程的基本工作过程pp下面我们通过一个下面我们通过一个下面我们通过一个下面我们通过一个简单例子简单例子简单例子简单例子来讲解来讲解来讲解来讲解MapReduceMapReduceMapReduceMapReduce的基本原理的基本原理的基本原理的基本原理。pp1 1 1 1任务的描述任务的描述任务的描述任务的描述pp来自江苏、浙江、山东三个省的来自江苏、浙江、山东三个省的来自江苏、浙江、

90、山东三个省的来自江苏、浙江、山东三个省的9 9 9 9所高校联合举行了一场编程大赛,所高校联合举行了一场编程大赛,所高校联合举行了一场编程大赛,所高校联合举行了一场编程大赛,每个省有每个省有每个省有每个省有3 3 3 3所高校参加,每所高校各派所高校参加,每所高校各派所高校参加,每所高校各派所高校参加,每所高校各派5 5 5 5名队员参赛,各所高校的比赛名队员参赛,各所高校的比赛名队员参赛,各所高校的比赛名队员参赛,各所高校的比赛平均成绩如表平均成绩如表平均成绩如表平均成绩如表6.16.16.16.1所示。所示。所示。所示。江苏省江苏省江苏省江苏省浙江省浙江省浙江省浙江省山东省山东省山东省山东

91、省南京大学南京大学南京大学南京大学90909090浙江大学浙江大学浙江大学浙江大学95959595山东大学山东大学山东大学山东大学92929292东南大学东南大学东南大学东南大学93939393浙江工业大学浙江工业大学浙江工业大学浙江工业大学84848484中国海洋大学中国海洋大学中国海洋大学中国海洋大学85858585河海大学河海大学河海大学河海大学84848484宁波大学宁波大学宁波大学宁波大学88888888青岛大学青岛大学青岛大学青岛大学87878787表表6.16.1原始比赛成绩原始比赛成绩7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.3.2

92、6.3.2MapReduceMapReduce的基本工作过程的基本工作过程pp我们可以用如表我们可以用如表我们可以用如表我们可以用如表6.26.26.26.2所示的形式来表示成绩,这样每所高校所示的形式来表示成绩,这样每所高校所示的形式来表示成绩,这样每所高校所示的形式来表示成绩,这样每所高校就具备了所属省份和平均分数这两个属性,即就具备了所属省份和平均分数这两个属性,即就具备了所属省份和平均分数这两个属性,即就具备了所属省份和平均分数这两个属性,即 。南京大学:南京大学:南京大学:南京大学: 江苏省,江苏省,江苏省,江苏省,90909090东南大学:东南大学:东南大学:东南大学: 江苏省,江

93、苏省,江苏省,江苏省,93939393河海大学:河海大学:河海大学:河海大学: 江苏省,江苏省,江苏省,江苏省,84848484浙江大学:浙江大学:浙江大学:浙江大学: 浙江省,浙江省,浙江省,浙江省,95959595浙江工业大学:浙江工业大学:浙江工业大学:浙江工业大学: 浙江省,浙江省,浙江省,浙江省,84848484宁波大学:宁波大学:宁波大学:宁波大学: 浙江省,浙江省,浙江省,浙江省,88888888山东大学:山东大学:山东大学:山东大学: 山东省,山东省,山东省,山东省,92929292中国海洋大学:中国海洋大学:中国海洋大学:中国海洋大学: 山东省,山东省,山东省,山东省,858

94、58585青岛大学:青岛大学:青岛大学:青岛大学: 山东省,山东省,山东省,山东省,87878787表表6.26.2增加属性信息后的比赛成绩增加属性信息后的比赛成绩7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.3.26.3.2MapReduceMapReduce的基本工作过程的基本工作过程pp统计各个省份高校的平均分数时,高校的名称并不是很重要,统计各个省份高校的平均分数时,高校的名称并不是很重要,统计各个省份高校的平均分数时,高校的名称并不是很重要,统计各个省份高校的平均分数时,高校的名称并不是很重要,我们略去高校名称,如表我们略去高校名称,如表我们

95、略去高校名称,如表我们略去高校名称,如表6.36.36.36.3所示。所示。所示。所示。江苏省,江苏省,江苏省,江苏省,90909090江苏省,江苏省,江苏省,江苏省,93939393江苏省,江苏省,江苏省,江苏省,84848484浙江省,浙江省,浙江省,浙江省,95959595浙江省,浙江省,浙江省,浙江省,84848484浙江省,浙江省,浙江省,浙江省,88888888山东省,山东省,山东省,山东省,92929292山东省,山东省,山东省,山东省,85858585山东省,山东省,山东省,山东省,87878787表表6.36.3略去高校名称后的比赛成绩略去高校名称后的比赛成绩pp接下来对各个

96、省份的高校的成绩进行汇总,如表接下来对各个省份的高校的成绩进行汇总,如表接下来对各个省份的高校的成绩进行汇总,如表接下来对各个省份的高校的成绩进行汇总,如表6.46.46.46.4所示。所示。所示。所示。江苏省,江苏省,江苏省,江苏省,90909090、93939393、84848484浙江省,浙江省,浙江省,浙江省,95959595、84848484、88888888山东省,山东省,山东省,山东省,92929292、85858585、87878787表表6.46.4各省比赛成绩汇总各省比赛成绩汇总7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.3.26

97、.3.2MapReduceMapReduce的基本工作过程的基本工作过程pp计算求得各省高校的平均值如表计算求得各省高校的平均值如表计算求得各省高校的平均值如表计算求得各省高校的平均值如表6.56.56.56.5所示。所示。所示。所示。表表6.56.5各省平均成绩各省平均成绩江苏省,江苏省,江苏省,江苏省,89898989浙江省,浙江省,浙江省,浙江省,89898989山东省,山东省,山东省,山东省,88888888pp以上为计算各省平均成绩的主要步骤,我们可以用以上为计算各省平均成绩的主要步骤,我们可以用以上为计算各省平均成绩的主要步骤,我们可以用以上为计算各省平均成绩的主要步骤,我们可以用

98、MapReduceMapReduceMapReduceMapReduce来实现,来实现,来实现,来实现,其详细步骤如下:其详细步骤如下:其详细步骤如下:其详细步骤如下:pp2 2 2 2任务的任务的任务的任务的MapReduceMapReduceMapReduceMapReduce实现实现实现实现MapReduceMapReduceMapReduceMapReduce包含包含包含包含MapMapMapMap、ShuffleShuffleShuffleShuffle和和和和ReduceReduceReduceReduce三个步骤,其中三个步骤,其中三个步骤,其中三个步骤,其中ShuffleShu

99、ffleShuffleShuffle由由由由HadoopHadoopHadoopHadoop自动完成,自动完成,自动完成,自动完成,HadoopHadoopHadoopHadoop的使用者可以无需了解并的使用者可以无需了解并的使用者可以无需了解并的使用者可以无需了解并行程序的底层实现,只需关注行程序的底层实现,只需关注行程序的底层实现,只需关注行程序的底层实现,只需关注MapMapMapMap和和和和ReduceReduceReduceReduce的实现。的实现。的实现。的实现。7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.3.26.3.2MapRed

100、uceMapReduce的基本工作过程的基本工作过程1. Map Input1. Map Input1. Map Input1. Map Input: 在在在在MapMapMapMap部分,我们需要输入部分,我们需要输入部分,我们需要输入部分,我们需要输入数据,这里数据,这里数据,这里数据,这里KeyKeyKeyKey是高校的名是高校的名是高校的名是高校的名称,称,称,称,ValueValueValueValue是属性值,即所属省份和平均分数,如表是属性值,即所属省份和平均分数,如表是属性值,即所属省份和平均分数,如表是属性值,即所属省份和平均分数,如表6.66.66.66.6所示。所示。所示

101、。所示。KeyKeyKeyKey:南京大学:南京大学:南京大学:南京大学ValueValueValueValue: 江苏省,江苏省,江苏省,江苏省,90909090KeyKeyKeyKey:东南大学:东南大学:东南大学:东南大学ValueValueValueValue: 江苏省,江苏省,江苏省,江苏省,93939393KeyKeyKeyKey:河海大学:河海大学:河海大学:河海大学ValueValueValueValue: 江苏省,江苏省,江苏省,江苏省,84848484KeyKeyKeyKey:浙江大学:浙江大学:浙江大学:浙江大学ValueValueValueValue: 浙江省,浙江省,

102、浙江省,浙江省,95959595KeyKeyKeyKey:浙江工业大学:浙江工业大学:浙江工业大学:浙江工业大学ValueValueValueValue: 浙江省,浙江省,浙江省,浙江省,84848484KeyKeyKeyKey:宁波大学:宁波大学:宁波大学:宁波大学ValueValueValueValue: 浙江省,浙江省,浙江省,浙江省,88888888KeyKeyKeyKey:山东大学:山东大学:山东大学:山东大学ValueValueValueValue: 山东省,山东省,山东省,山东省,92929292KeyKeyKeyKey:中国海洋大学:中国海洋大学:中国海洋大学:中国海洋大学Va

103、lueValueValueValue: 山东省,山东省,山东省,山东省,85858585KeyKeyKeyKey:青岛大学:青岛大学:青岛大学:青岛大学ValueValueValueValue: 山东省,山东省,山东省,山东省,87878787表表6.66.6MapInputMapInput数据数据7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.3.26.3.2MapReduceMapReduce的基本工作过程的基本工作过程2. Map Output2. Map Output2. Map Output2. Map Output: 对所属省份平均分数进行重

104、分组,去除高校名称,将所属省份变对所属省份平均分数进行重分组,去除高校名称,将所属省份变对所属省份平均分数进行重分组,去除高校名称,将所属省份变对所属省份平均分数进行重分组,去除高校名称,将所属省份变为为为为KeyKeyKeyKey,平均分数变为,平均分数变为,平均分数变为,平均分数变为ValueValueValueValue,如表,如表,如表,如表6.76.76.76.7所示。所示。所示。所示。KeyKeyKeyKey:江苏省:江苏省:江苏省:江苏省ValueValueValueValue:90909090KeyKeyKeyKey:江苏省:江苏省:江苏省:江苏省ValueValueValue

105、Value:93939393KeyKeyKeyKey:江苏省:江苏省:江苏省:江苏省ValueValueValueValue:84848484KeyKeyKeyKey:浙江省:浙江省:浙江省:浙江省ValueValueValueValue:95959595KeyKeyKeyKey:浙江省:浙江省:浙江省:浙江省ValueValueValueValue:84848484KeyKeyKeyKey:浙江省:浙江省:浙江省:浙江省ValueValueValueValue:88888888KeyKeyKeyKey:山东省:山东省:山东省:山东省ValueValueValueValue:92929292K

106、eyKeyKeyKey:山东省:山东省:山东省:山东省ValueValueValueValue:85858585KeyKeyKeyKey:山东省:山东省:山东省:山东省ValueValueValueValue:87878787表表6.76.7MapOutputMapOutput数据数据7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.3.26.3.2MapReduceMapReduce的基本工作过程的基本工作过程3. Shuffle Output3. Shuffle Output3. Shuffle Output3. Shuffle Output: Shu

107、ffleShuffleShuffleShuffle由由由由HadoopHadoopHadoopHadoop自动完成,其任务是实现自动完成,其任务是实现自动完成,其任务是实现自动完成,其任务是实现MapMapMapMap,对,对,对,对KeyKeyKeyKey进行分组,进行分组,进行分组,进行分组,用户可以获得用户可以获得用户可以获得用户可以获得ValueValueValueValue的列表,即的列表,即的列表,即的列表,即ListListListList,如表,如表,如表,如表6.86.86.86.8所示。所示。所示。所示。KeyKeyKeyKey:江苏省:江苏省:江苏省:江苏省ListLis

108、tListList:90909090、93939393、84848484KeyKeyKeyKey:浙江省:浙江省:浙江省:浙江省ListListListList:95959595、84848484、88888888KeyKeyKeyKey:山东省:山东省:山东省:山东省ListListListList:92929292、85858585、87878787表表6.86.8ShuffleOutputShuffleOutput数据数据4. Reduce Input4. Reduce Input4. Reduce Input4. Reduce Input: 表表表表6.86.86.86.8中的内容将作

109、为中的内容将作为中的内容将作为中的内容将作为ReduceReduceReduceReduce任务的输入数据,即从任务的输入数据,即从任务的输入数据,即从任务的输入数据,即从ShuffleShuffleShuffleShuffle任务任务任务任务中获得的(中获得的(中获得的(中获得的(Key,ListKey,ListKey,ListKey,List)。)。)。)。7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.3.26.3.2MapReduceMapReduce的基本工作过程的基本工作过程5. Reduce Output5. Reduce Output5.

110、 Reduce Output5. Reduce Output: ReduceReduceReduceReduce任务的功能是完成用户的计算逻辑,这里的任务是计算每任务的功能是完成用户的计算逻辑,这里的任务是计算每任务的功能是完成用户的计算逻辑,这里的任务是计算每任务的功能是完成用户的计算逻辑,这里的任务是计算每个省份的高校学生的比赛平均成绩,获得的最终结果如表个省份的高校学生的比赛平均成绩,获得的最终结果如表个省份的高校学生的比赛平均成绩,获得的最终结果如表个省份的高校学生的比赛平均成绩,获得的最终结果如表6.96.96.96.9所示。所示。所示。所示。江苏省,江苏省,江苏省,江苏省,89 8

111、9 89 89 浙江省,浙江省,浙江省,浙江省,89 89 89 89 山东省,山东省,山东省,山东省,88 88 88 88 表表6.96.9ReduceOutputReduceOutput数据数据7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.3.36.3.3LISPLISP中的中的MapReduceMapReducepp为了进一步理解为了进一步理解为了进一步理解为了进一步理解MapReduceMapReduceMapReduceMapReduce,我们简单介绍最早使用,我们简单介绍最早使用,我们简单介绍最早使用,我们简单介绍最早使用MapMapMa

112、pMap和和和和ReduceReduceReduceReduce的的的的LISPLISPLISPLISP语言中的语言中的语言中的语言中的MapMapMapMap和和和和ReduceReduceReduceReduce操作。操作。操作。操作。pp下面的下面的下面的下面的LISPLISPLISPLISP语句定义的这个语句定义的这个语句定义的这个语句定义的这个MapMapMapMap操作是将向量(操作是将向量(操作是将向量(操作是将向量(1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 5 5 5 5)和向量()和向量()和向量()和向量(10 9 8 7 610 9 8 7 610

113、9 8 7 610 9 8 7 6)进行相乘的操作,输出也为向量)进行相乘的操作,输出也为向量)进行相乘的操作,输出也为向量)进行相乘的操作,输出也为向量(10 18 24 28 3010 18 24 28 3010 18 24 28 3010 18 24 28 30)。)。)。)。(map vector #*#(1 2 3 4 5)#(10 9 8 7 6)-#(10 18 24 28 30)(map vector #*#(1 2 3 4 5)#(10 9 8 7 6)-#(10 18 24 28 30)这个这个这个这个MapMapMapMap操作对应于向量到向量的映射,两个向量按操作对应于

114、向量到向量的映射,两个向量按操作对应于向量到向量的映射,两个向量按操作对应于向量到向量的映射,两个向量按乘积关系进行映射。乘积关系进行映射。乘积关系进行映射。乘积关系进行映射。7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.3.36.3.3LISPLISP中的中的MapReduceMapReducepp下面的下面的下面的下面的LISPLISPLISPLISP语句定义的这个语句定义的这个语句定义的这个语句定义的这个ReduceReduceReduceReduce操作是将向量(操作是将向量(操作是将向量(操作是将向量(1 2 3 4 1 2 3 4 1 2

115、3 4 1 2 3 4 5 6 7 8 9 105 6 7 8 9 105 6 7 8 9 105 6 7 8 9 10)中的元素进行求和的)中的元素进行求和的)中的元素进行求和的)中的元素进行求和的ReduceReduceReduceReduce操作操作操作操作, , , ,输出结果输出结果输出结果输出结果为为为为55555555。 (reduce #+#(1 2 3 4 5 6 7 8 9 10)-55 (reduce #+#(1 2 3 4 5 6 7 8 9 10)-55这个这个这个这个ReduceReduceReduceReduce操作对应于向量的约简,它将向量按求和操作对应于向量的

116、约简,它将向量按求和操作对应于向量的约简,它将向量按求和操作对应于向量的约简,它将向量按求和的关系约简为一个值。的关系约简为一个值。的关系约简为一个值。的关系约简为一个值。可以看出,在可以看出,在可以看出,在可以看出,在LISPLISPLISPLISP语言中语言中语言中语言中MapMapMapMap和和和和ReduceReduceReduceReduce只是作为一种只是作为一种只是作为一种只是作为一种操作定义,并没有体现出任何的分布式计算的特征。操作定义,并没有体现出任何的分布式计算的特征。操作定义,并没有体现出任何的分布式计算的特征。操作定义,并没有体现出任何的分布式计算的特征。7/25/2

117、024并行计算实验室并行计算实验室 http:/www.qhoa.org6.3.46.3.4MapReduceMapReduce的特点的特点ppMapReduceMapReduceMapReduceMapReduce主要具有以下几个主要具有以下几个主要具有以下几个主要具有以下几个特点特点特点特点:(1 1 1 1)需要在集群条件下使用)需要在集群条件下使用)需要在集群条件下使用)需要在集群条件下使用。MapReduceMapReduceMapReduceMapReduce的主要作用是实现对大数据的分布式处理,其设的主要作用是实现对大数据的分布式处理,其设的主要作用是实现对大数据的分布式处理,其

118、设的主要作用是实现对大数据的分布式处理,其设计时的基本要求就是在大规模集群条件下的(虽然一些系计时的基本要求就是在大规模集群条件下的(虽然一些系计时的基本要求就是在大规模集群条件下的(虽然一些系计时的基本要求就是在大规模集群条件下的(虽然一些系统可以在单机下运行,但这种条件下只具有仿真运行的意统可以在单机下运行,但这种条件下只具有仿真运行的意统可以在单机下运行,但这种条件下只具有仿真运行的意统可以在单机下运行,但这种条件下只具有仿真运行的意义),义),义),义),GoogleGoogleGoogleGoogle作为分布式作为分布式作为分布式作为分布式MapReduceMapReduceMapR

119、educeMapReduce提出者,它本身就是世提出者,它本身就是世提出者,它本身就是世提出者,它本身就是世界上最大的集群系统,所以界上最大的集群系统,所以界上最大的集群系统,所以界上最大的集群系统,所以MapReduceMapReduceMapReduceMapReduce天然需要在集群系统天然需要在集群系统天然需要在集群系统天然需要在集群系统下运行才能有效。下运行才能有效。下运行才能有效。下运行才能有效。7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.3.46.3.4MapReduceMapReduce的特点的特点(2 2 2 2)需要有相应的分布式

120、文件系统的支持。)需要有相应的分布式文件系统的支持。)需要有相应的分布式文件系统的支持。)需要有相应的分布式文件系统的支持。这里要注意的是单独的这里要注意的是单独的这里要注意的是单独的这里要注意的是单独的MapReduceMapReduceMapReduceMapReduce模式并不具有自动的并行性能,就像模式并不具有自动的并行性能,就像模式并不具有自动的并行性能,就像模式并不具有自动的并行性能,就像它在它在它在它在LISPLISPLISPLISP语言中的表现一样,它只有与相应的分布式文件系统相结合才语言中的表现一样,它只有与相应的分布式文件系统相结合才语言中的表现一样,它只有与相应的分布式文

121、件系统相结合才语言中的表现一样,它只有与相应的分布式文件系统相结合才能完美地体现能完美地体现能完美地体现能完美地体现MapReduceMapReduceMapReduceMapReduce这种编程框架的优势。这种编程框架的优势。这种编程框架的优势。这种编程框架的优势。如如如如GoogleGoogleGoogleGoogle系统对应的分布式文件系统为系统对应的分布式文件系统为系统对应的分布式文件系统为系统对应的分布式文件系统为GFSGFSGFSGFS,HadoopHadoopHadoopHadoop系统对应的分布式系统对应的分布式系统对应的分布式系统对应的分布式文件系统为文件系统为文件系统为文件

122、系统为HDFSHDFSHDFSHDFS。MapReduceMapReduceMapReduceMapReduce能实现计算的自动并行化很大程度上是由于分布式文件系统能实现计算的自动并行化很大程度上是由于分布式文件系统能实现计算的自动并行化很大程度上是由于分布式文件系统能实现计算的自动并行化很大程度上是由于分布式文件系统在对文件存储时就实现了对大数据文件的切分,这种并行方法也叫数据在对文件存储时就实现了对大数据文件的切分,这种并行方法也叫数据在对文件存储时就实现了对大数据文件的切分,这种并行方法也叫数据在对文件存储时就实现了对大数据文件的切分,这种并行方法也叫数据并行方法。数据并行方法避免了对计

123、算任务本身的人工切分,降低了编并行方法。数据并行方法避免了对计算任务本身的人工切分,降低了编并行方法。数据并行方法避免了对计算任务本身的人工切分,降低了编并行方法。数据并行方法避免了对计算任务本身的人工切分,降低了编程的难度,而像程的难度,而像程的难度,而像程的难度,而像MPIMPIMPIMPI往往需要人工对计算任务进行切分,因此分布式编往往需要人工对计算任务进行切分,因此分布式编往往需要人工对计算任务进行切分,因此分布式编往往需要人工对计算任务进行切分,因此分布式编程难度较大。程难度较大。程难度较大。程难度较大。7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.o

124、rg6.3.46.3.4MapReduceMapReduce的特点的特点(3 3 3 3)可以在商品化集群条件下运行,不需要特别的硬件支)可以在商品化集群条件下运行,不需要特别的硬件支)可以在商品化集群条件下运行,不需要特别的硬件支)可以在商品化集群条件下运行,不需要特别的硬件支持持持持. . . .和高性能计算不同,基于和高性能计算不同,基于和高性能计算不同,基于和高性能计算不同,基于MapReduceMapReduceMapReduceMapReduce的系统往往不需要特别的系统往往不需要特别的系统往往不需要特别的系统往往不需要特别的硬件支持,按的硬件支持,按的硬件支持,按的硬件支持,按G

125、oogleGoogleGoogleGoogle的报道,他们的实验系统中的节点的报道,他们的实验系统中的节点的报道,他们的实验系统中的节点的报道,他们的实验系统中的节点就是基于典型的双核就是基于典型的双核就是基于典型的双核就是基于典型的双核X86X86X86X86的系统,配置的系统,配置的系统,配置的系统,配置24GB24GB24GB24GB的内存,网络的内存,网络的内存,网络的内存,网络为百兆网和千兆网构成,存储设备的便宜的为百兆网和千兆网构成,存储设备的便宜的为百兆网和千兆网构成,存储设备的便宜的为百兆网和千兆网构成,存储设备的便宜的IDEIDEIDEIDE硬盘。硬盘。硬盘。硬盘。7/25/

126、2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.3.46.3.4MapReduceMapReduce的特点的特点(4 4 4 4)假设节点的失效为正常情况。)假设节点的失效为正常情况。)假设节点的失效为正常情况。)假设节点的失效为正常情况。传统的服务器通常被认为是稳定的,但在服务器数量巨大传统的服务器通常被认为是稳定的,但在服务器数量巨大传统的服务器通常被认为是稳定的,但在服务器数量巨大传统的服务器通常被认为是稳定的,但在服务器数量巨大或采用廉价服务的条件下,服务器的实效将变得常见,所或采用廉价服务的条件下,服务器的实效将变得常见,所或采用廉价服务的条件下,服务器

127、的实效将变得常见,所或采用廉价服务的条件下,服务器的实效将变得常见,所以通常基于以通常基于以通常基于以通常基于MapReduceMapReduceMapReduceMapReduce的分布式计算系统采用了存储备份、的分布式计算系统采用了存储备份、的分布式计算系统采用了存储备份、的分布式计算系统采用了存储备份、计算备份和计算迁移等策略来应对,从而实现在单节点不计算备份和计算迁移等策略来应对,从而实现在单节点不计算备份和计算迁移等策略来应对,从而实现在单节点不计算备份和计算迁移等策略来应对,从而实现在单节点不稳定的情况下保持系统整个的稳定性。稳定的情况下保持系统整个的稳定性。稳定的情况下保持系统整

128、个的稳定性。稳定的情况下保持系统整个的稳定性。7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.3.46.3.4MapReduceMapReduce的特点的特点(5 5 5 5)适合对大数据进行处理。)适合对大数据进行处理。)适合对大数据进行处理。)适合对大数据进行处理。由于基于由于基于由于基于由于基于MapReduceMapReduceMapReduceMapReduce的系统并行化是通过数据切分实现的数的系统并行化是通过数据切分实现的数的系统并行化是通过数据切分实现的数的系统并行化是通过数据切分实现的数据并行,同时计算程序启动时需要向各节点拷贝计算程序

129、,据并行,同时计算程序启动时需要向各节点拷贝计算程序,据并行,同时计算程序启动时需要向各节点拷贝计算程序,据并行,同时计算程序启动时需要向各节点拷贝计算程序,过小的文件在这种模式下工作反而会效率低下。过小的文件在这种模式下工作反而会效率低下。过小的文件在这种模式下工作反而会效率低下。过小的文件在这种模式下工作反而会效率低下。GoogleGoogleGoogleGoogle的的的的实验也表明一个由实验也表明一个由实验也表明一个由实验也表明一个由150150150150秒时间完成的计算任务,程序启动阶秒时间完成的计算任务,程序启动阶秒时间完成的计算任务,程序启动阶秒时间完成的计算任务,程序启动阶段

130、的时间就花了段的时间就花了段的时间就花了段的时间就花了60606060秒,可以想象,如果计算任务数据过小,秒,可以想象,如果计算任务数据过小,秒,可以想象,如果计算任务数据过小,秒,可以想象,如果计算任务数据过小,这样的花费是不值得的,同时对过小的数据进行切分也无这样的花费是不值得的,同时对过小的数据进行切分也无这样的花费是不值得的,同时对过小的数据进行切分也无这样的花费是不值得的,同时对过小的数据进行切分也无必要。所以必要。所以必要。所以必要。所以MapReduceMapReduceMapReduceMapReduce更适合进行大数据的处理。更适合进行大数据的处理。更适合进行大数据的处理。更

131、适合进行大数据的处理。7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.3.46.3.4MapReduceMapReduce的特点的特点(6 6 6 6)计算向存储迁移。)计算向存储迁移。)计算向存储迁移。)计算向存储迁移。传统的高性能计算数据集中存储,计算时数据向计算节点传统的高性能计算数据集中存储,计算时数据向计算节点传统的高性能计算数据集中存储,计算时数据向计算节点传统的高性能计算数据集中存储,计算时数据向计算节点拷贝,而基于拷贝,而基于拷贝,而基于拷贝,而基于MapReduceMapReduceMapReduceMapReduce的分布式系统在数据

132、存储时就实现的分布式系统在数据存储时就实现的分布式系统在数据存储时就实现的分布式系统在数据存储时就实现了分布式存储,一个较大的文件会被切分成大量较小的文了分布式存储,一个较大的文件会被切分成大量较小的文了分布式存储,一个较大的文件会被切分成大量较小的文了分布式存储,一个较大的文件会被切分成大量较小的文件存储于不同的节点,系统调度机制在启动计算时会将计件存储于不同的节点,系统调度机制在启动计算时会将计件存储于不同的节点,系统调度机制在启动计算时会将计件存储于不同的节点,系统调度机制在启动计算时会将计算程序尽可能分发给需要处理的数据所在的节点。计算程算程序尽可能分发给需要处理的数据所在的节点。计算

133、程算程序尽可能分发给需要处理的数据所在的节点。计算程算程序尽可能分发给需要处理的数据所在的节点。计算程序的大小通常会比数据文件小的多,所以迁移计算的网络序的大小通常会比数据文件小的多,所以迁移计算的网络序的大小通常会比数据文件小的多,所以迁移计算的网络序的大小通常会比数据文件小的多,所以迁移计算的网络代价要比迁移数据小的多。代价要比迁移数据小的多。代价要比迁移数据小的多。代价要比迁移数据小的多。7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.3.46.3.4MapReduceMapReduce的特点的特点(7 7 7 7)MapReduceMapRedu

134、ceMapReduceMapReduce的计算效率会受最慢的的计算效率会受最慢的的计算效率会受最慢的的计算效率会受最慢的MapMapMapMap任务影响。任务影响。任务影响。任务影响。由于由于由于由于ReduceReduceReduceReduce操作的完成需要等待所有操作的完成需要等待所有操作的完成需要等待所有操作的完成需要等待所有MapMapMapMap任务的完成,所以任务的完成,所以任务的完成,所以任务的完成,所以如果如果如果如果MapMapMapMap任务中有一个任务出现了延迟,则整个任务中有一个任务出现了延迟,则整个任务中有一个任务出现了延迟,则整个任务中有一个任务出现了延迟,则整个

135、MapReduceMapReduceMapReduceMapReduce操作将受最慢的操作将受最慢的操作将受最慢的操作将受最慢的MapMapMapMap任务的影响。任务的影响。任务的影响。任务的影响。7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.46.4实现实现Map/ReduceMap/Reduce的的C C语言实例语言实例ppMap/ReduceMap/ReduceMap/ReduceMap/Reduce操作代表了一大类的数据处理操作方式,为了操作代表了一大类的数据处理操作方式,为了操作代表了一大类的数据处理操作方式,为了操作代表了一大类的数据处理

136、操作方式,为了让大家对让大家对让大家对让大家对Map/ReduceMap/ReduceMap/ReduceMap/Reduce的工作过程有一个直观的了解,下面的工作过程有一个直观的了解,下面的工作过程有一个直观的了解,下面的工作过程有一个直观的了解,下面的程序采用的程序采用的程序采用的程序采用C C C C语言实现了一个简单经典的语言实现了一个简单经典的语言实现了一个简单经典的语言实现了一个简单经典的Map/ReduceMap/ReduceMap/ReduceMap/Reduce计算,计算,计算,计算,pp计算从控制台输入的字符串中单词的计数,这一计算过程计算从控制台输入的字符串中单词的计数,

137、这一计算过程计算从控制台输入的字符串中单词的计数,这一计算过程计算从控制台输入的字符串中单词的计数,这一计算过程都是在同一个节点上完成的,并未实现计算的并行化,历都是在同一个节点上完成的,并未实现计算的并行化,历都是在同一个节点上完成的,并未实现计算的并行化,历都是在同一个节点上完成的,并未实现计算的并行化,历史上的史上的史上的史上的LispLispLispLisp语言也是运行在单机的上的程序,语言也是运行在单机的上的程序,语言也是运行在单机的上的程序,语言也是运行在单机的上的程序,pp这个例子的主要目的是让大家理解这一操作的过程。程序这个例子的主要目的是让大家理解这一操作的过程。程序这个例子

138、的主要目的是让大家理解这一操作的过程。程序这个例子的主要目的是让大家理解这一操作的过程。程序中的中的中的中的my_map()my_map()my_map()my_map()和和和和my_reduce()my_reduce()my_reduce()my_reduce()函数分别实现了对字符串的函数分别实现了对字符串的函数分别实现了对字符串的函数分别实现了对字符串的MapMapMapMap和和和和ReduceReduceReduceReduce操作。操作。操作。操作。7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.46.4实现实现Map/ReduceMap/

139、Reduce的的C C语言实例语言实例pp程序程序程序程序6.16.16.16.1输入:输入:输入:输入: this is map reduce hello map hello reducethis is map reduce hello map hello reducethis is map reduce hello map hello reducethis is map reduce hello map hello reduce7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.46.4实现实现Map/ReduceMap/Reduce的的C C语言实例语

140、言实例输出:输出:输出:输出: This is map results:This is map results:This is map results:This is map results:This is reduce results:This is reduce results:This is reduce results:This is reduce results:p此运行实例中我们从控制台输入字符此运行实例中我们从控制台输入字符串串“this is map reduce hello map this is map reduce hello map hello reduce”hello

141、 reduce”,程序通过,程序通过MapMap和和ReduceReduce过程对字符串的的单词出现的频过程对字符串的的单词出现的频率进行统计,并输出了结果,这是一个率进行统计,并输出了结果,这是一个典型的典型的Map/ReduceMap/Reduce过程。过程。7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.56.5建立建立HadoopHadoop开发环境开发环境pp本节使用三个本节使用三个本节使用三个本节使用三个LinuxLinuxLinuxLinux虚拟机来构建虚拟机来构建虚拟机来构建虚拟机来构建HadoopHadoopHadoopHadoop集群

142、环境,其中一个虚集群环境,其中一个虚集群环境,其中一个虚集群环境,其中一个虚拟机作为拟机作为拟机作为拟机作为NameNodeNameNodeNameNodeNameNode(MasterMasterMasterMaster节点),另外两个虚拟机作为节点),另外两个虚拟机作为节点),另外两个虚拟机作为节点),另外两个虚拟机作为DataNodeDataNodeDataNodeDataNode(SlaveSlaveSlaveSlave节点),如图节点),如图节点),如图节点),如图6.56.56.56.5所示。在所示。在所示。在所示。在3 3 3 3个节点下个节点下个节点下个节点下3 3 3 3个虚

143、拟机个虚拟机个虚拟机个虚拟机的机器名和的机器名和的机器名和的机器名和IPIPIPIP地址信息如下。地址信息如下。地址信息如下。地址信息如下。虚拟机虚拟机虚拟机虚拟机1 1 1 1:主机名为:主机名为:主机名为:主机名为vm1vm1vm1vm1,IPIPIPIP为为为为192.168.122.101192.168.122.101192.168.122.101192.168.122.101,作为,作为,作为,作为NameNodeNameNodeNameNodeNameNode使用;使用;使用;使用;虚拟机虚拟机虚拟机虚拟机2 2 2 2:主机名为:主机名为:主机名为:主机名为vm2vm2vm2vm

144、2,IPIPIPIP为为为为192.168.122.102192.168.122.102192.168.122.102192.168.122.102,作为,作为,作为,作为DataNodeDataNodeDataNodeDataNode使用;使用;使用;使用;虚拟机虚拟机虚拟机虚拟机3 3 3 3:主机名为:主机名为:主机名为:主机名为vm3vm3vm3vm3,IPIPIPIP为为为为192.168.122.103192.168.122.103192.168.122.103192.168.122.103,作为,作为,作为,作为DataNodeDataNodeDataNodeDataNode使用

145、。使用。使用。使用。图6.5Hadoop集群配置7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.5.16.5.1相关准备工作相关准备工作(1 1 1 1)准备虚拟机的操作系统。)准备虚拟机的操作系统。)准备虚拟机的操作系统。)准备虚拟机的操作系统。首先准备首先准备首先准备首先准备3 3 3 3个安装了操作系统的虚拟机,本节使用的个安装了操作系统的虚拟机,本节使用的个安装了操作系统的虚拟机,本节使用的个安装了操作系统的虚拟机,本节使用的虚拟机上安装的操作系统均为虚拟机上安装的操作系统均为虚拟机上安装的操作系统均为虚拟机上安装的操作系统均为CentOS 6.

146、4CentOS 6.4CentOS 6.4CentOS 6.4(64646464位),位),位),位),先安装一机虚拟机,然后先安装一机虚拟机,然后先安装一机虚拟机,然后先安装一机虚拟机,然后CloneCloneCloneClone两个出另外两个虚拟两个出另外两个虚拟两个出另外两个虚拟两个出另外两个虚拟机。机。机。机。CentOSCentOSCentOSCentOS的官方网站:的官方网站:的官方网站:的官方网站:www.centos.orgwww.centos.orgwww.centos.orgwww.centos.org7/25/2024并行计算实验室并行计算实验室 http:/www.qh

147、oa.org6.5.16.5.1相关准备工作相关准备工作(2 2 2 2)下载)下载)下载)下载HadoopHadoopHadoopHadoop系统。系统。系统。系统。本节我们使用本节我们使用本节我们使用本节我们使用HadoopHadoopHadoopHadoop的稳定版本的稳定版本的稳定版本的稳定版本0.21.00.21.00.21.00.21.0。CentOSCentOSCentOSCentOS的官方网站:的官方网站:的官方网站:的官方网站:www.hadoop.apache.orgwww.hadoop.apache.orgwww.hadoop.apache.orgwww.hadoop.a

148、pache.org(3 3 3 3)下载)下载)下载)下载JDKJDKJDKJDK。JDKJDKJDKJDK的版本为的版本为的版本为的版本为1.7.0_451.7.0_451.7.0_451.7.0_45(64646464位)。位)。位)。位)。下载地址:下载地址:下载地址:下载地址: http:/www.qhoa.org6.5.16.5.1相关准备工作相关准备工作(4 4 4 4)新建用户)新建用户)新建用户)新建用户“hadoop”“hadoop”“hadoop”“hadoop”。在每个节点上使用在每个节点上使用在每个节点上使用在每个节点上使用useradduseradduseraddus

149、eradd指令新建一个用户指令新建一个用户指令新建一个用户指令新建一个用户hadoophadoophadoophadoop,并设置密,并设置密,并设置密,并设置密码。码。码。码。 useradd hadoopuseradd hadoopuseradd hadoopuseradd hadoop passwd hadoop passwd hadoop passwd hadoop passwd hadoop(5 5 5 5)永久关闭每个节点的防火墙()永久关闭每个节点的防火墙()永久关闭每个节点的防火墙()永久关闭每个节点的防火墙(rootrootrootroot权限)。权限)。权限)。权限)。在每

150、个节点上执行以下指令,这样将永久性的关闭每个阶段的防在每个节点上执行以下指令,这样将永久性的关闭每个阶段的防在每个节点上执行以下指令,这样将永久性的关闭每个阶段的防在每个节点上执行以下指令,这样将永久性的关闭每个阶段的防火墙火墙火墙火墙 chkconfig iptables off/chkconfig iptables off/chkconfig iptables off/chkconfig iptables off/永久性生效,重启后不会复原永久性生效,重启后不会复原永久性生效,重启后不会复原永久性生效,重启后不会复原7/25/2024并行计算实验室并行计算实验室 http:/www.qho

151、a.org6.5.16.5.1相关准备工作相关准备工作(6 6 6 6)配置)配置)配置)配置sshsshsshssh实现实现实现实现HadoopHadoopHadoopHadoop结点间用户的无密码访问结点间用户的无密码访问结点间用户的无密码访问结点间用户的无密码访问HadoopHadoopHadoopHadoop需要在各个结点间进行信息传递,因此需要实现结点间的需要在各个结点间进行信息传递,因此需要实现结点间的需要在各个结点间进行信息传递,因此需要实现结点间的需要在各个结点间进行信息传递,因此需要实现结点间的无密码访问,这与采用无密码访问,这与采用无密码访问,这与采用无密码访问,这与采用M

152、PIMPIMPIMPI进行并行程序设计相同,否则系统会进行并行程序设计相同,否则系统会进行并行程序设计相同,否则系统会进行并行程序设计相同,否则系统会不停地向你请求密码验证。不停地向你请求密码验证。不停地向你请求密码验证。不停地向你请求密码验证。这里的配置在各个节点的这里的配置在各个节点的这里的配置在各个节点的这里的配置在各个节点的hadoophadoophadoophadoop用户下进行。用户下进行。用户下进行。用户下进行。配置过程与配置过程与配置过程与配置过程与MPIMPIMPIMPI部分的配置过程相关,这里不再详述,配置完成部分的配置过程相关,这里不再详述,配置完成部分的配置过程相关,这

153、里不再详述,配置完成部分的配置过程相关,这里不再详述,配置完成后使用后使用后使用后使用sshsshsshssh指令可以在三个虚拟机之间实现无密码访问。指令可以在三个虚拟机之间实现无密码访问。指令可以在三个虚拟机之间实现无密码访问。指令可以在三个虚拟机之间实现无密码访问。7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.5.2 6.5.2 JDKJDK的安装配置的安装配置ppHadoopHadoopHadoopHadoop是采用是采用是采用是采用JavaJavaJavaJava编写的,每个虚拟机上均需要安装编写的,每个虚拟机上均需要安装编写的,每个虚拟机上均

154、需要安装编写的,每个虚拟机上均需要安装JavaJavaJavaJava的的的的JDKJDKJDKJDK,JDKJDKJDKJDK的安装配置需在的安装配置需在的安装配置需在的安装配置需在rootrootrootroot用户下进行,具体用户下进行,具体用户下进行,具体用户下进行,具体步骤如下。步骤如下。步骤如下。步骤如下。(1 1 1 1)在)在)在)在SunSunSunSun官方网站下载官方网站下载官方网站下载官方网站下载JDKJDKJDKJDK软件包软件包软件包软件包jdk-7u45-linux-x64.tar.gzjdk-7u45-linux-x64.tar.gzjdk-7u45-linux

155、-x64.tar.gzjdk-7u45-linux-x64.tar.gz。(2 2 2 2)新建目录)新建目录)新建目录)新建目录/usr/java/usr/java/usr/java/usr/java,将下载的,将下载的,将下载的,将下载的JDKJDKJDKJDK软件包进行进行解压。软件包进行进行解压。软件包进行进行解压。软件包进行进行解压。 mkdir /usr/javamkdir /usr/javamkdir /usr/javamkdir /usr/java tar zxvf jdk-7u45-linux-x64.tar.gz tar zxvf jdk-7u45-linux-x64.ta

156、r.gz tar zxvf jdk-7u45-linux-x64.tar.gz tar zxvf jdk-7u45-linux-x64.tar.gz7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.5.2 6.5.2 JDKJDK的安装配置的安装配置(3 3 3 3)配置)配置)配置)配置JavaJavaJavaJava环境变量。环境变量。环境变量。环境变量。 #set java environment#set java environment#set java environment#set java environment export JAVA_HO

157、ME=/usr/java/jdk1.7.0_45 export JAVA_HOME=/usr/java/jdk1.7.0_45 export JAVA_HOME=/usr/java/jdk1.7.0_45 export JAVA_HOME=/usr/java/jdk1.7.0_45 export JRE_HOME=/usr/java/jdk1.7.0_45/jre export JRE_HOME=/usr/java/jdk1.7.0_45/jre export JRE_HOME=/usr/java/jdk1.7.0_45/jre export JRE_HOME=/usr/java/jdk1.7

158、.0_45/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH export

159、PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.5.2 6.5.2 JDKJDK的安装配置的安装配置(4 4 4 4)保存了)保存了)保存了)保存了JavaJavaJavaJava环境变量之后,在命令行中键入如下命令,环境变量之后,在命令行中键入如下命令,环境变量之后,在命令行中键入如下命令,

160、环境变量之后,在命令行中键入如下命令,使环境变量生效:使环境变量生效:使环境变量生效:使环境变量生效:source /etc/profilesource /etc/profilesource /etc/profilesource /etc/profile / / / /使环境变量设置生效使环境变量设置生效使环境变量设置生效使环境变量设置生效通过通过通过通过whichwhichwhichwhich命令测试命令测试命令测试命令测试JDKJDKJDKJDK的安装是否成功:的安装是否成功:的安装是否成功:的安装是否成功:which javawhich javawhich javawhich java系

161、统显示如下信息:系统显示如下信息:系统显示如下信息:系统显示如下信息:/usr/java/jdk1.6.0_12/bin/java/usr/java/jdk1.6.0_12/bin/java/usr/java/jdk1.6.0_12/bin/java/usr/java/jdk1.6.0_12/bin/java此时此时此时此时JDKJDKJDKJDK配置成功,接下来可进行配置成功,接下来可进行配置成功,接下来可进行配置成功,接下来可进行HadoopHadoopHadoopHadoop的安装配置。的安装配置。的安装配置。的安装配置。7/25/2024并行计算实验室并行计算实验室 http:/www

162、.qhoa.org6.5.2 6.5.2 JDKJDK的安装配置的安装配置pp程序程序程序程序6.26.26.26.2public class testpublic class testpublic class testpublic class test public static void public static void public static void public static void main(String args ) main(String args ) main(String args ) main(String args ) System.out.println(T

163、his is a hadoop test program! JDK System.out.println(This is a hadoop test program! JDK System.out.println(This is a hadoop test program! JDK System.out.println(This is a hadoop test program! JDK successedsuccessedsuccessedsuccessed!);););); 7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.5.2 6.5.2 JDKJ

164、DK的安装配置的安装配置pp编译测试程序:编译测试程序:编译测试程序:编译测试程序: javac test.java javac test.java javac test.java javac test.javapp运行测试程序:运行测试程序:运行测试程序:运行测试程序: java testjava testjava testjava testpp如果输出为:如果输出为:如果输出为:如果输出为: This is a hadoop test program!This is a hadoop test program!This is a hadoop test program!This is a

165、hadoop test program! JDK successedJDK successedJDK successedJDK successed!pp表明表明表明表明JDKJDKJDKJDK已成功安装,并能成功编译执行已成功安装,并能成功编译执行已成功安装,并能成功编译执行已成功安装,并能成功编译执行JavaJavaJavaJava程序。程序。程序。程序。7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.5.36.5.3下载、解压下载、解压HadoopHadoop,配置,配置HadoopHadoop环境变量环境变量ppHadoopHadoopHadoop

166、Hadoop集群中每个节点的安装、配置是相同的,我们可以集群中每个节点的安装、配置是相同的,我们可以集群中每个节点的安装、配置是相同的,我们可以集群中每个节点的安装、配置是相同的,我们可以现在一个虚拟机上进行安装、配置,然后将其复制到其他现在一个虚拟机上进行安装、配置,然后将其复制到其他现在一个虚拟机上进行安装、配置,然后将其复制到其他现在一个虚拟机上进行安装、配置,然后将其复制到其他节点的相应目录。节点的相应目录。节点的相应目录。节点的相应目录。pp将将将将hadoop-0.21.0.tar.gzhadoop-0.21.0.tar.gzhadoop-0.21.0.tar.gzhadoop-0

167、.21.0.tar.gz放置在放置在放置在放置在vm1vm1vm1vm1的的的的/home/hadoop/home/hadoop/home/hadoop/home/hadoop目录中,目录中,目录中,目录中,用用用用hadoophadoophadoophadoop用户对其进行解压缩:用户对其进行解压缩:用户对其进行解压缩:用户对其进行解压缩: cd /home/hadoop cd /home/hadoop cd /home/hadoop cd /home/hadoop tar zxvf hadoop-0.21.0.tar.gz tar zxvf hadoop-0.21.0.tar.gz tar

168、 zxvf hadoop-0.21.0.tar.gz tar zxvf hadoop-0.21.0.tar.gz7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.5.36.5.3下载、解压下载、解压HadoopHadoop,配置,配置HadoopHadoop环境变量环境变量pp把把把把HadoopHadoopHadoopHadoop的安装路径添加到的安装路径添加到的安装路径添加到的安装路径添加到“/etc/profile”“/etc/profile”“/etc/profile”“/etc/profile”中,在文件的末尾中,在文件的末尾中,在文件的末尾中,

169、在文件的末尾添下面的代码,每个节点均需要进行此步配置。添下面的代码,每个节点均需要进行此步配置。添下面的代码,每个节点均需要进行此步配置。添下面的代码,每个节点均需要进行此步配置。 #hadoop environment #hadoop environment #hadoop environment #hadoop environment export HADOOP_HOME=/usr/java/jdk1.7.0_45 export HADOOP_HOME=/usr/java/jdk1.7.0_45 export HADOOP_HOME=/usr/java/jdk1.7.0_45 export

170、 HADOOP_HOME=/usr/java/jdk1.7.0_45 export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/binpp保存了保存了保存了保存了HadoopHadoopHadoopHadoop环境变量之后,在命令行中键入如下命令,使环境变环境变量之后,在命令行中键入如下命令,使环境变环境变量之后,在命令行中键入如下命令,使环境变环境变量之后,在命令行中键入如下命令,

171、使环境变量生效:量生效:量生效:量生效: source /etc/profile source /etc/profile source /etc/profile source /etc/profile/使环境变量设置生效使环境变量设置生效使环境变量设置生效使环境变量设置生效7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.5.46.5.4修改修改HadoopHadoop配置文件配置文件ppHadoopHadoopHadoopHadoop的配置文件存于的配置文件存于的配置文件存于的配置文件存于confconfconfconf文件夹中,我们需要对该文件文件夹中

172、,我们需要对该文件文件夹中,我们需要对该文件文件夹中,我们需要对该文件夹中以下文件进行修改:夹中以下文件进行修改:夹中以下文件进行修改:夹中以下文件进行修改:hadoop-env.shhadoop-env.shhadoop-env.shhadoop-env.sh、core-site.xmlcore-site.xmlcore-site.xmlcore-site.xml、mapred-site.xmlmapred-site.xmlmapred-site.xmlmapred-site.xml、mastersmastersmastersmasters、slavesslavesslavesslaves。

173、(1 1 1 1)修改)修改)修改)修改hadoop-env.shhadoop-env.shhadoop-env.shhadoop-env.sh文件。文件。文件。文件。ppHadoopHadoopHadoopHadoop的的的的JavaJavaJavaJava环境变量在环境变量在环境变量在环境变量在hadoop-env.shhadoop-env.shhadoop-env.shhadoop-env.sh中进行设置。使用中进行设置。使用中进行设置。使用中进行设置。使用vimvimvimvim打开打开打开打开hadoop-env.shhadoop-env.shhadoop-env.shhadoop-

174、env.sh文件,找到文件,找到文件,找到文件,找到JavaJavaJavaJava环境变量的设置位环境变量的设置位环境变量的设置位环境变量的设置位置,将其改为置,将其改为置,将其改为置,将其改为JDKJDKJDKJDK的安装地址,保存并退出。的安装地址,保存并退出。的安装地址,保存并退出。的安装地址,保存并退出。 export JAVA_HOME=/usr/java/jdk1.7.0_45export JAVA_HOME=/usr/java/jdk1.7.0_45export JAVA_HOME=/usr/java/jdk1.7.0_45export JAVA_HOME=/usr/java/

175、jdk1.7.0_457/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.5.46.5.4修改修改HadoopHadoop配置文件配置文件(2 2 2 2)修改)修改)修改)修改core-site.xmlcore-site.xmlcore-site.xmlcore-site.xml文件。文件。文件。文件。ppcore-site.xmlcore-site.xmlcore-site.xmlcore-site.xml用于设置用于设置用于设置用于设置HadoopHadoopHadoopHadoop集群的集群的集群的集群的HDFSHDFSHDFSHDFS的地址和端口号

176、,的地址和端口号,的地址和端口号,的地址和端口号,以及用于保存以及用于保存以及用于保存以及用于保存HDFSHDFSHDFSHDFS信息的信息的信息的信息的tmptmptmptmp文件夹,对文件夹,对文件夹,对文件夹,对HDFSHDFSHDFSHDFS进行重新格式进行重新格式进行重新格式进行重新格式化的时候先行删除化的时候先行删除化的时候先行删除化的时候先行删除tmptmptmptmp中的文件。中的文件。中的文件。中的文件。pp新建新建新建新建tmptmptmptmp文件夹:文件夹:文件夹:文件夹: mkdir /home/hadoop/hadoop-0.21.0/tmpmkdir /home/

177、hadoop/hadoop-0.21.0/tmpmkdir /home/hadoop/hadoop-0.21.0/tmpmkdir /home/hadoop/hadoop-0.21.0/tmppp使用使用使用使用vimvimvimvim打开打开打开打开core-site.xmlcore-site.xmlcore-site.xmlcore-site.xml文件文件文件文件,在,在,在,在 之间添加以下代码之间添加以下代码之间添加以下代码之间添加以下代码:7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.5.46.5.4修改修改HadoopHadoop配置文件

178、配置文件 hadoop.tmp.dir hadoop.tmp.dir hadoop.tmp.dir hadoop.tmp.dir /home/hadoop/hadoop-0.21.0/tmp /home/hadoop/hadoop-0.21.0/tmp /home/hadoop/hadoop-0.21.0/tmp /home/hadoop/hadoop-0.21.0/tmp fs.defaultFS fs.defaultFS fs.defaultFS fs.defaultFS hdfs:/192.168.122.101/:9000 hdfs:/192.168.122.101/:9000 hdf

179、s:/192.168.122.101/:9000 hdfs:/192.168.122.101/:9000pp其中的其中的其中的其中的IPIPIPIP地址需配置为集群的地址需配置为集群的地址需配置为集群的地址需配置为集群的NameNodeNameNodeNameNodeNameNode(MasterMasterMasterMaster)节点的)节点的)节点的)节点的IPIPIPIP,这里这里这里这里“192.168.122.101”“192.168.122.101”“192.168.122.101”“192.168.122.101”。7/25/2024并行计算实验室并行计算实验室 http:/w

180、ww.qhoa.org6.5.46.5.4修改修改HadoopHadoop配置文件配置文件(3 3 3 3)修改)修改)修改)修改mapred-site.xmlmapred-site.xmlmapred-site.xmlmapred-site.xml文件。文件。文件。文件。pp在在在在mapred-site.xmlmapred-site.xmlmapred-site.xmlmapred-site.xml文件的在文件的在文件的在文件的在 之间添加以下代码,配置之间添加以下代码,配置之间添加以下代码,配置之间添加以下代码,配置JobTrackerJobTrackerJobTrackerJobTra

181、cker的主机名和端口。的主机名和端口。的主机名和端口。的主机名和端口。 mapreduce.jobtracker.address mapreduce.jobtracker.address mapreduce.jobtracker.address mapreduce.jobtracker.address http:/192.168.122.101:9001 http:/192.168.122.101:9001 http:/192.168.122.101:9001 http:/192.168.122.101:9001 NameNode NameNode NameNode NameNode7/25

182、/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.5.46.5.4修改修改HadoopHadoop配置文件配置文件(4 4 4 4)修改)修改)修改)修改mastersmastersmastersmasters文件。文件。文件。文件。pp使用使用使用使用vimvimvimvim打开打开打开打开mastersmastersmastersmasters文件,写入文件,写入文件,写入文件,写入NameNodeNameNodeNameNodeNameNode(MasterMasterMasterMaster)节点的主机名,)节点的主机名,)节点的主机名,)节点的主机名,这

183、里为这里为这里为这里为vm1vm1vm1vm1,保存并退出。,保存并退出。,保存并退出。,保存并退出。 vm1vm1vm1vm1(5 5 5 5)修改)修改)修改)修改slavesslavesslavesslaves文件。文件。文件。文件。pp使用使用使用使用vimvimvimvim打开打开打开打开slavesslavesslavesslaves文件,写入文件,写入文件,写入文件,写入DataNodeDataNodeDataNodeDataNode(SlaverSlaverSlaverSlaver)节点的主机名,)节点的主机名,)节点的主机名,)节点的主机名,这里为这里为这里为这里为vm1vm

184、1vm1vm1、vm2vm2vm2vm2,保存并退出。,保存并退出。,保存并退出。,保存并退出。 Vm2Vm2Vm2Vm2 vm3 vm3 vm3 vm37/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.5.56.5.5将配置好的将配置好的HadoopHadoop文件复制到其他节点文件复制到其他节点pp到了这里,我们已经安装、配置了一个到了这里,我们已经安装、配置了一个到了这里,我们已经安装、配置了一个到了这里,我们已经安装、配置了一个HadoopHadoopHadoopHadoop节点,节点,节点,节点,HadoopHadoopHadoopHadoop集

185、群中每个节点集群中每个节点集群中每个节点集群中每个节点的安装、配置是相同的,这里需要将的安装、配置是相同的,这里需要将的安装、配置是相同的,这里需要将的安装、配置是相同的,这里需要将vm1vm1vm1vm1上的上的上的上的HadoopHadoopHadoopHadoop文件夹整体复制到其他文件夹整体复制到其他文件夹整体复制到其他文件夹整体复制到其他的节点,执行以下指令:的节点,执行以下指令:的节点,执行以下指令:的节点,执行以下指令: scp -r /home/hadoop/hadoop-0.21.0 hadoopvm2:/home/hadoop/scp -r /home/hadoop/had

186、oop-0.21.0 hadoopvm2:/home/hadoop/scp -r /home/hadoop/hadoop-0.21.0 hadoopvm2:/home/hadoop/scp -r /home/hadoop/hadoop-0.21.0 hadoopvm2:/home/hadoop/ scp -r /home/hadoop/hadoop-0.21.0 hadoopvm3:/home/hadoop/ scp -r /home/hadoop/hadoop-0.21.0 hadoopvm3:/home/hadoop/ scp -r /home/hadoop/hadoop-0.21.0 h

187、adoopvm3:/home/hadoop/ scp -r /home/hadoop/hadoop-0.21.0 hadoopvm3:/home/hadoop/pp格式化格式化格式化格式化NameNodeNameNodeNameNodeNameNodepp在正式启动在正式启动在正式启动在正式启动HadoopHadoopHadoopHadoop之前,需要执行以下指令,对之前,需要执行以下指令,对之前,需要执行以下指令,对之前,需要执行以下指令,对HadoopHadoopHadoopHadoop的分布式文件进行初的分布式文件进行初的分布式文件进行初的分布式文件进行初始化:始化:始化:始化: cd

188、/home/hadoop/hadoop-0.21.0/bincd /home/hadoop/hadoop-0.21.0/bincd /home/hadoop/hadoop-0.21.0/bincd /home/hadoop/hadoop-0.21.0/bin ./hadoop namenode format ./hadoop namenode format ./hadoop namenode format ./hadoop namenode formatpp顺利执行此格式化指令后,会显示如下信息:顺利执行此格式化指令后,会显示如下信息:顺利执行此格式化指令后,会显示如下信息:顺利执行此格式化指

189、令后,会显示如下信息: 14/01/04 21:21:20 INFO common.Storage: Storage directory 14/01/04 21:21:20 INFO common.Storage: Storage directory 14/01/04 21:21:20 INFO common.Storage: Storage directory 14/01/04 21:21:20 INFO common.Storage: Storage directory /home/hadoop/hadoop-0.21.0/tmp/dfs/name has been successfull

190、y formatted./home/hadoop/hadoop-0.21.0/tmp/dfs/name has been successfully formatted./home/hadoop/hadoop-0.21.0/tmp/dfs/name has been successfully formatted./home/hadoop/hadoop-0.21.0/tmp/dfs/name has been successfully formatted.7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.5.66.5.6启动、停止启动、停止HadoopHado

191、oppp进入进入进入进入/home/hadoop/hadoop-0.21.0/bin/home/hadoop/hadoop-0.21.0/bin/home/hadoop/hadoop-0.21.0/bin/home/hadoop/hadoop-0.21.0/bin/,可以看到文件,可以看到文件,可以看到文件,可以看到文件夹中有很多的启动脚本。夹中有很多的启动脚本。夹中有很多的启动脚本。夹中有很多的启动脚本。pp执行执行执行执行start-all.shstart-all.shstart-all.shstart-all.sh脚本,启动脚本,启动脚本,启动脚本,启动HadoopHadoopHadoo

192、pHadoop。cd /home/hadoop/hadoop-0.21.0/bincd /home/hadoop/hadoop-0.21.0/bincd /home/hadoop/hadoop-0.21.0/bincd /home/hadoop/hadoop-0.21.0/bin./ start-all.sh./ start-all.sh./ start-all.sh./ start-all.sh7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.5.66.5.6启动、停止启动、停止HadoopHadooppp执行之后,可以看到如下信息:执行之后,可以看到如

193、下信息:执行之后,可以看到如下信息:执行之后,可以看到如下信息:pp从中我们可以看出,此脚本启动了从中我们可以看出,此脚本启动了从中我们可以看出,此脚本启动了从中我们可以看出,此脚本启动了NameNodeNameNodeNameNodeNameNode、SecondaryNameSecondaryNameSecondaryNameSecondaryName、JobTrackerJobTrackerJobTrackerJobTracker、两个、两个、两个、两个DataNodeDataNodeDataNodeDataNode以及两个以及两个以及两个以及两个TaskTrackerTaskTrack

194、erTaskTrackerTaskTracker。7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.5.66.5.6启动、停止启动、停止HadoopHadooppp在在在在NameNode(192.168.122.101) NameNode(192.168.122.101) NameNode(192.168.122.101) NameNode(192.168.122.101) 上输入上输入上输入上输入jpsjpsjpsjps命令查看启动进程情况:命令查看启动进程情况:命令查看启动进程情况:命令查看启动进程情况:11850 SecondaryNameNode

195、11850 SecondaryNameNode11850 SecondaryNameNode11850 SecondaryNameNode11650 NameNode11650 NameNode11650 NameNode11650 NameNode11949 JobTracker11949 JobTracker11949 JobTracker11949 JobTracker12132 Jps12132 Jps12132 Jps12132 Jpspp在在在在DataNode(192.168.122.102)DataNode(192.168.122.102)DataNode(192.168.12

196、2.102)DataNode(192.168.122.102)、DataNode(192.168.122.102) DataNode(192.168.122.102) DataNode(192.168.122.102) DataNode(192.168.122.102) 上输入上输入上输入上输入jpsjpsjpsjps命令查命令查命令查命令查看启动进程情况:看启动进程情况:看启动进程情况:看启动进程情况:8727 DataNode8727 DataNode8727 DataNode8727 DataNode8819 TaskTracker8819 TaskTracker8819 TaskTra

197、cker8819 TaskTracker8958 Jps8958 Jps8958 Jps8958 Jpspp到此到此到此到此HadoopHadoopHadoopHadoop已经配置成功,不同的已经配置成功,不同的已经配置成功,不同的已经配置成功,不同的HadoopHadoopHadoopHadoop版本配置方法会有所不同。版本配置方法会有所不同。版本配置方法会有所不同。版本配置方法会有所不同。ppHadoopHadoopHadoopHadoop的停止命令如下:的停止命令如下:的停止命令如下:的停止命令如下: bin/stop-all.sh bin/stop-all.sh bin/stop-al

198、l.sh bin/stop-all.sh7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org(1 1 1 1)先在)先在)先在)先在hadoophadoophadoophadoop用户当前目录下新建文件夹用户当前目录下新建文件夹用户当前目录下新建文件夹用户当前目录下新建文件夹WordCountWordCountWordCountWordCount,在其中建,在其中建,在其中建,在其中建立两个测试文件立两个测试文件立两个测试文件立两个测试文件file1.txtfile1.txtfile1.txtfile1.txt,file1.txtfile1.txtfile1.t

199、xtfile1.txt。自行在两个文件中填写。自行在两个文件中填写。自行在两个文件中填写。自行在两个文件中填写内容。内容。内容。内容。 file1.txt file1.txt file1.txt file1.txt文件内容为:文件内容为:文件内容为:文件内容为: This is the first hadoop test program!This is the first hadoop test program!This is the first hadoop test program!This is the first hadoop test program! file2.txt file2

200、.txt file2.txt file2.txt文件内容为:文件内容为:文件内容为:文件内容为:This program is not very difficult,but this program is a common This program is not very difficult,but this program is a common This program is not very difficult,but this program is a common This program is not very difficult,but this program is a com

201、mon hadoop program!hadoop program!hadoop program!hadoop program!(2 2 2 2)在)在)在)在HadoopHadoopHadoopHadoop文件系统上新建文件夹文件系统上新建文件夹文件系统上新建文件夹文件系统上新建文件夹“input”“input”“input”“input”,并查看其中的内容:,并查看其中的内容:,并查看其中的内容:,并查看其中的内容:hadoop fs -mkdir inputhadoop fs -mkdir inputhadoop fs -mkdir inputhadoop fs -mkdir input

202、hadoop fs -lshadoop fs -lshadoop fs -lshadoop fs -ls6.5.76.5.7在在HadoopHadoop系统上运行测试程序系统上运行测试程序WordCountWordCount7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.5.76.5.7在在HadoopHadoop系统上运行测试程序系统上运行测试程序WordCountWordCount(3 3 3 3)将)将)将)将WordCountWordCountWordCountWordCount文件夹中文件夹中文件夹中文件夹中file1.txtfile1.txt

203、file1.txtfile1.txt、file2.txtfile2.txtfile2.txtfile2.txt文件上文件上文件上文件上传到刚刚创建的传到刚刚创建的传到刚刚创建的传到刚刚创建的“input”“input”“input”“input”文件夹:文件夹:文件夹:文件夹:hadoop fs put /home/hadoop/WordCount/*.txt inputhadoop fs put /home/hadoop/WordCount/*.txt inputhadoop fs put /home/hadoop/WordCount/*.txt inputhadoop fs put /ho

204、me/hadoop/WordCount/*.txt input(4 4 4 4)运行)运行)运行)运行HadoopHadoopHadoopHadoop的示例程序的示例程序的示例程序的示例程序wordcountwordcountwordcountwordcount,运行命令如下:,运行命令如下:,运行命令如下:,运行命令如下: hadoop jar /home/hadoop/hadoop-0.21.0/hadoop-hadoop jar /home/hadoop/hadoop-0.21.0/hadoop-hadoop jar /home/hadoop/hadoop-0.21.0/hadoop-h

205、adoop jar /home/hadoop/hadoop-0.21.0/hadoop-mapred-examples-0.21.0.jar wordcount intput mapred-examples-0.21.0.jar wordcount intput mapred-examples-0.21.0.jar wordcount intput mapred-examples-0.21.0.jar wordcount intput outputoutputoutputoutput7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.5.76.5.7在在Ha

206、doopHadoop系统上运行测试程序系统上运行测试程序WordCountWordCount(5 5 5 5)查看输出结果的文件位置和)查看输出结果的文件位置和)查看输出结果的文件位置和)查看输出结果的文件位置和WordCountWordCountWordCountWordCount的结果:的结果:的结果:的结果: hadoop fs -ls outputhadoop fs -ls outputhadoop fs -ls outputhadoop fs -ls outputpp随后出现的信息显示了输出结果的文件位置随后出现的信息显示了输出结果的文件位置随后出现的信息显示了输出结果的文件位置随后

207、出现的信息显示了输出结果的文件位置 -rw-r-r- 3 hadoop supergroup 118 2014-01-04 23:18 -rw-r-r- 3 hadoop supergroup 118 2014-01-04 23:18 -rw-r-r- 3 hadoop supergroup 118 2014-01-04 23:18 -rw-r-r- 3 hadoop supergroup 118 2014-01-04 23:18 /user/hadoop/output/part-r-00000/user/hadoop/output/part-r-00000/user/hadoop/outpu

208、t/part-r-00000/user/hadoop/output/part-r-00000pp使用如下指令查看使用如下指令查看使用如下指令查看使用如下指令查看WordCountWordCountWordCountWordCount的结果:的结果:的结果:的结果: hadoop fs -cat /user/hadoop/output/part-r-00000 hadoop fs -cat /user/hadoop/output/part-r-00000 hadoop fs -cat /user/hadoop/output/part-r-00000 hadoop fs -cat /user/ha

209、doop/output/part-r-00000pp显示信息如下:显示信息如下:显示信息如下:显示信息如下:7/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org6.5.76.5.7在在HadoopHadoop系统上运行测试程序系统上运行测试程序WordCountWordCountThis 2This 2This 2This 2a 1a 1a 1a 1common 1common 1common 1common 1difficult,but 1difficult,but 1difficult,but 1difficult,but 1first 1first 1fi

210、rst 1first 1hadoop 2hadoop 2hadoop 2hadoop 2is 3is 3is 3is 3not 1not 1not 1not 1program 2program 2program 2program 2program! 2program! 2program! 2program! 2test 1test 1test 1test 1the 1the 1the 1the 1this 1this 1this 1this 1very 1very 1very 1very 17/25/2024并行计算实验室并行计算实验室 http:/www.qhoa.org练习题练习题pp1

211、1 1 1谷歌谷歌谷歌谷歌“三宝三宝三宝三宝”是是是是 、 、 。pp2 2 2 2简述简述简述简述GFSGFSGFSGFS的工作过程。的工作过程。的工作过程。的工作过程。pp3 3 3 3简述简述简述简述HDFSHDFSHDFSHDFS的分块策略。的分块策略。的分块策略。的分块策略。pp4 4 4 4简述搭建简述搭建简述搭建简述搭建HadoopHadoopHadoopHadoop开发环境的流程,并动手搭建开发环境的流程,并动手搭建开发环境的流程,并动手搭建开发环境的流程,并动手搭建3 3 3 3个节点的个节点的个节点的个节点的HadoopHadoopHadoopHadoop集群。集群。集群。集群。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > 金融/商业/投资

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号