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

下载本文档

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

文档简介

1、云计算与大数据技术 人民邮电出版社王鹏 黄焱 安俊秀 张逸琴 编著 目录录第1章云云计计算与大大数据基基础第2章云云计计算与大大数据的的相关技技术第3章虚虚拟拟化技术术第4章集集群群系统基基础第5章MPI面面向计算算第6章Hadoop分分布式大大数据系系统第7章HPCC面向数数据的高高性能计计算集群群系统第8章Storm基于于拓扑的的流数据据实时计计算系统统第9章服服务务器与数数据中心心第10章章云云计算大大数据仿仿真技术术CONTENTS第6章Hadoop分分布式大大数据系系统第6章Hadoop分布式大大数据系系统云计算算与大数数据技术术第6章Hadoop分布布式大数数据系统统6.1Hado

2、op概述6.2HDFS6.2.1HDFS文件系系统的原原型GFS6.2.2HDFS文件的的基本结结构6.2.3HDFS的存储储过程6.3MapReduce编程框框架6.3.1MapReduce的的发展历历史6.3.2MapReduce的的基本工工作过程程6.3.3LISP中的MapReduce6.3.4MapReduce的的特点6.4实实现Map/Reduce的C语语言实例例6.5建建立Hadoop开开发环境境6.5.1相相关准备备工作6.5.2JDK的安装装配置6.5.3下下载、解解压Hadoop,配配置Hadoop环境境变量6.5.4修修改Hadoop配置置文件6.5.5将将配置好好的Ha

3、doop文件件复制到到其他节节点6.5.6启启动、停停止Hadoop6.5.7在在Hadoop系统上上运行测测试程序序WordCountHadoop是由Apache软件件基金会会研发的的一种开开源、高高可靠、伸缩性性强的分布式计计算系统统,主要用用于对大于1TB的海量数数据的处处理。Hadoop采采用Java语言开开发,是对Google的的MapReduce核心技技术的开开源实现现。目前Hadoop的核心模块块包括系统HDFS(Hadoop Distributed FileSystem,Hadoop分布布式文件件系统)和分布式计计算框架架MapReduce,这一结结构实现现了计算和存存储的高高

4、度耦合合,十分有有利于面向数据据的系统架架构,因因此已成成为大数数据技术术领域的的事实标标准。Hadoop设设计时有有以下的的几点假假设:服务器失失效是正正常的;存储和处处理的数数据是海海量的;文件不会会被频繁繁写入和和修改;机柜内的的数据传传输速度度大于机机柜间的的数据传传输速度度;海量数据据的情况况下移动动计算比比移动数数据更高高效。6.1Hadoop概述Hadoop是是Apache开源组组织的分分布式计计算系统统,其分分为第一一代Hadoop和第第二代Hadoop。第一代Hadoop包包含0.20.x、0.21.x、0.22.x三个版版本,0.20.x最最后演化化成了1.0.x版本本,第

5、二二代Hadoop包含含0.23.x和2.x两个个版本,2.x本版比比0.23.x版本增增加了NameNodeHA和Wire-compatibility两两个特性性,版本本发展如如图6.1所示示。图6.1Hadoop本版版发展路路线6.1Hadoop概述Hadoop与与MPI在数据据处理上上的差异主要体现现在数据据存储与与数据处处理在系系统中位位置不同同,MPI是计计算与存存储分离离,Hadoop是计计算向存存储迁移移,如图图6.2所示。图6.2Hadoop与MPI在在数据处处理上的的差异6.1Hadoop概述在MPI中数据据存储的的节点和和数据处处理的节节点往往往是不同同的,一一般在每每次计

6、算算开始时时MPI需要从从数据存存储节点点读取需需要处理理的数据据分配给给各个计计算节点点对数据据进行处处理,因因此MPI中数数据存储储和数据据处理是是分离的的。对于计算算密集型型的应用用MPI能表现现出良好好的性能能,但对对于处理理TB级级数据的的数据密密集型应应用由于于网络数数据传输输速度很很慢,MPI的的性能会会大大降降低,甚甚至会到到不可忍忍受的地地步,所所以对于于构建在在MPI上的并并行计算算系统网网络通讯讯速度一一直是一一个重要要的性能能指标,用“计计算换通通信”也也是MPI并行行程序设设计中的的基本原原则。6.1Hadoop概述在Hadoop中由于于有HDFS文文件系统统的支持持

7、,数据据是分布布式存储储在各个个节点的的,计算算时各节节点读取取存储在在自己节节点的数数据进行行处理,从而避避免了大大量数据据在网络络上的传传递,实实现“计计算向存存储的迁迁移”。6.2HDFSHadoop系系统实现现对大数数据的自自动并行行处理,是一种种数据并并行方法法,这种种方法实实现自动动并行处处理时需需要对数数据进行行划分,而对数数据的划划分在Hadoop系系统中从从数据的的存储就就开始了了,因此此文件系系统是Hadoop系系统的重重要组成成部分,也是Hadoop实实现自动动并行框框架的基基础。Hadoop的的文件系系统称为为HDFS(HadoopDistributedFileSyst

8、em)。6.2.1HDFS文件系系统的原原型GFSHadoop中中的HDFS原原型来自自Google文文件系系统(Google FileSystem,GFS),为了了满足Google迅迅速增长长的数据据处理要要求,Google设设计并实实现了GFS。Google文文件系统统是一个个可扩展展的分布布式文件件系统,用于对对大量数数据进行行访问的的大型、分布式式应用。它运行于于廉价的的普通硬硬件上,但可以以提供容容错功能能。它可可以给大大量的用用户提供供总体性性能较高高的服务务,也可可以提供供容错功功能。我们认为为GFS是一种种面向不不可信服服务器节节点而设设计的文文件系统统。谷歌“三三宝”是“Go

9、ogle文文件系统统”、“BigTable大表表”、“MapReduce算算法”,有了了自己的的文件系系统,谷谷歌就可可以有效效地组织织庞大的的数据、服务器器和存储储,并用用它们工工作。作作为谷歌歌“三宝宝”的其其中之一一,GFS的技技术优势势不言而而喻。6.2.1HDFS文件系系统的原原型GFSGFS为为分布式式结构,它是一一个高度容错错网络文文件系统统,主要由由一个Master(主)和和众多chunkserver(大大块设备备)构成成的,体体系结构构如图6.3所所示。图6.3GFS的体体系结构构6.2.1HDFS文件系系统的原原型GFS下面简单单描述一一下GFS的的工作过过程。(1)客客户

10、端使使用固定定大小的的块将应应用程序序指定的的文件名名和字节节偏移转转换成文文件的一一个块索索引,向向Master发送包包含文件件名和块块索引的的请求。(2)Master收收到客户户端发来来的请求求,Master向块块服务器器发出指指示,同同时时刻刻监控众众多chunkserver的状态态。chunkserver缓存Master从从客户端端收到的的文件名名和块索索引等信信息。6.2.1HDFS文件系系统的原原型GFS(3)Master通通过和chunkserver的交交互,向向客户端端发送chunk-handle和和副本位位置。其其中文件件被分成成若干个个块,而而每个块块都是由由一个不不变的、

11、全局惟惟一的64位的的chunk-handle标识。Handle是由Master在在块创建建时分配配的。而而出于安安全性考考虑,每每一个文文件块都都要被复复制到多多个chunkserver上,一一般默认认3个副副本。(4)客客户端向向其中的的一个副副本发出出请求,请求指指定了chunkhandle(chunkserver以以chunkhandle标识chunk)和和块内的的一个字字节区间间。(5)客客户端从从chunkserver获获得块数数据,任任务完成成。6.2.1HDFS文件系系统的原原型GFS通常Client可以以在一个个请求中中询问多多个chunk的地址址,而Master也也可以很很

12、快回应应这些请请求。GFS是是可以被被多个用用户同时时访问的的,一般般情况下下,Application和chunkserver是可以以在同一一台机子子上的,主要的的数据流流量是通通过Application和chunkserver之间,数据访访问的本本地性极极大地减减少了Application与Master之之间的交交互访问问,减少少了Master的负负荷量,提高了了文件系系统的性性能。6.2.1HDFS文件系系统的原原型GFS客户端从从来不会会从Master读和和写文件件数据。客户端端只是询询问Master它应应该和哪哪个chunkserver联系系。Client在一一段限定定的时间间内将这这

13、些信息息缓存,在后续续的操作作中客户户端直接接和chunkserver交互。由于Master对对于读和和写的操操作极少少,所以以极大地地减小了了Master的工作作负荷,真正提提高了Master的的利用性性能。Master保保存着三三类元数数据(metadata):文件名名和块的的名字空空间、从从文件到到块的映映射、副副本位置置。所有有的metadata都放在在内存中中。操作作日志的的引入可可以更简简单、更更可靠地地更新Master的的信息。6.2.1HDFS文件系系统的原原型GFS为GFS的控制制和神经经系统,副本为为Master的备份份,Chunk主要用用来和用用户交换换数据。网络中中的主

14、机机瘫痪,不会对对整个系系统造成成大的影影响,替替换上去去的主机机会自动动重建数数据。即即使Master瘫痪痪,也会会有Shadow作为为替补,并且Shadow在在一定时时候也会会充当Master来来提供控控制和数数据交换换。Google每天天有大量量的硬盘盘损坏,但是由由于有GFS,这些硬硬盘的损损坏是允允许的。有人形象象地比喻喻:分布布式的文文件系统统被分块块为很多多细胞单单元,一一旦细胞胞损坏,神经系系统(Master)会迅速速发现并并有相应应的冗余余措施来来使系统统正常运运行,这这些细胞胞可以看看作很多多GFS主机。这一工工作方式式就是人人类大脑脑的工作作方式。6.2.1HDFS文件系

15、系统的原原型GFS当然,作为Google的技技术基石石,GFS可以给大大量的用用户提供供总体性性能较高高的服务务,具有以下下优势:(1)Google采采用的存存储方法法是大量量、分散散的普通通廉价服服务器的的存储方方式,极极大降低低了成本本。(2)对对大文件件数据快快速存取取,这个个毫无疑疑问是可可以达到到的。(3)容容易扩展展,它是是成本很很低的普普通电脑脑,支持持动态插插入节点点;(4)容容错能力力强,它它的数据据同时会会在多个个chunkserver上上进行备备份,具具有相当当强的容容错性;(5)高高效访问问,它是是通过Bigtable来来实现的的,它是是Google FileSyste

16、m上层的的结构。GFS在实现现分布式式文件系系统的做做法上面面很多都都是简单单的,但但是确实实非常高高效。(6)GFS相相对于HDFS稳定性性是无庸庸置疑的的,并在在Google系统中中得到了了采用且且稳定的的运行。6.2.2HDFS文件的的基本结结构HDFS是一种种典型的主从式的的分布式式文件系系统,该文件件系统完完全是仿仿照Google的GFS文文件系统统而设计计的,HDFS的架构构如图6.4所所示。图6.4HDFS的架构构6.2.2HDFS文件的的基本结结构HDFS由一个个名叫Namenode的主主节点和和多个名名叫Datanode的子节节点组成成。Namenode存储储着文件件系统的的

17、元数据据,这些些元数据据包括文文件系统统的名字字空间等等,向用用户映射射文件系系统,并并负责管管理文件件的存储储等服务务,但实实际的数数据并不不存放在在Namenode。Namenode的的作用就就像是文文件系统统的总指指挥,并并向访问问文件系系统的客客户机提提供文件件系统的的映射,这种做做法并不不是Google或Hadoop的的创新,这和传传统并行行计算系系统中的的单一系系统映像像(SingleSystemImage)的做法法相同。HDFS中的Datanode用于于实际对对数据的的存放,对Datanode上数据据的访问问并不通通过Namemode,而是是与用户户直接建建立数据据通信。Hado

18、op启启动后我我们能看看到Namenode和Datanode这两个个进程。6.2.2HDFS文件的的基本结结构HDFS的工作作过程是这样的的:用户请求求创建文文件的指指令由Namenode进行行接收,Namenode将将存储数数据的Datanode的IP返回回给用户户,并通通知其他他接收副副本的Datanode,由由用户直直接与Datanode进行行数据传传送。Namenode同时时存储相相关的元元数据。整个文件件系统采采用标准准TCP/IP协议通通信,实实际是架架设在Linux文件件系统上上的一个个上层文文件系统统。HDFS上上的一个个典型文文件大小小一般都都在G字字节至T字节。6.2.2H

19、DFS文件的的基本结结构主从式是是云计算算系统的的一种典典型架构构方法,系统通通过主节节点屏蔽蔽底层的的复杂结结构,并并向用户户提供方方便的文文件目录录映射。有些改改进的主主从式架架构可能能会采用用分层的的主从式式方法,以减轻轻主节点点的负荷荷。6.2.3HDFS的存储储过程HDFS在对一一个文件件进行存存储时有有两个重重要的策策略:一个是是副本策略略,一个是是分块策略略。副本策略略保证了了文件存存储的高高可靠性性;分块策略略保证数数据并发发读写的的效率并并且是MapReduce实实现并行行数据处处理的基基础。6.2.3HDFS的存储储过程HDFS的分块块策略:通常HDFS在存储储一个文文件会

20、将将文件切切为64MB大大小的块块来进行行存储,数据块块会被分分别存储储在不同同的Datanode节点上上,这一一过程其其实就是是一种数数据任务务的切分分过程,在后面面对数据据进行MapReduce操操作时十十分重要要,同时时数据被被分块存存储后在在数据读读写时能能实现对对数据的的并发读读写,提提高数据据读写效效率。HDFS采用64MB这样较较大的文文件分块策略略有以下3个优点:(1)降降低客户户端与主主服务器器的交互互代价;(2)降降低网络络负载;(3)减减少主服服务器中中元数据据的大小小。6.2.3HDFS的存储储过程HDFS的副本本策略:HDFS对数据据块典型型的副本本策略为为3个副副本

21、,第一个副副本存放放在本地地节点,第二个副副本存放放在同一一个机架架的另一一个节点点,第三个本本副本存存放在不不同机架架上的另另一个节节点。这样的副副本策略略保证了了在HDFS文文件系统统中存储储的文件件具有很很高的可可靠性。6.2.3HDFS的存储储过程一个文件件写入HDFS的基本本过程可以描述述如下:写入操作作首先由由Namenode为为该文件件创建一一个新的的记录,该记录录为文件件分配存存储节点点包括文文件的分分块存储储信息,在写入入时系统统会对文文件进行行分块,文件写写入的客客户端获获得存储储位置的的信息后后直接与与指定的的Datanode进进行数据据通信,将文件件块按Namenode

22、分配配的位置置写入指指定的Datanode,数数据块在在写入时时不再通通过Namenode,因此此Namenode不不会成为为数据通通信的瓶瓶颈。6.3MapReduce编程框框架在云计算算和大数数据技术术领域被被广泛提提到并被被成功应应用的一一项技术术就是MapReduce。MapReduce是Google系统统和Hadoop系统统中的一一项核心心技术。6.3.1MapReduce的的发展历历史MapReduce出出现的历历史要追追述到1956年,图图灵奖获获得者著著名的人人工智能能专家McCarthy首次次提出了了LISP语言言的构想想,而在在LISP语言言中就包包含了现现在我们们所采用用

23、的MapReduce功功能。LISP语言是是一种用用于人工工智能领领域的语语言,在在人工智智能领域域有很多多的应用用,LISP在在1956年设设计时主主要是希希望能有有效地进进行“符符号运算算”。LISP是一种种表处理理语言,其逻辑辑简单但但结构不不同于其其他的高高级语言言。1960年,McCarthy更是是极有预预见性地地提出:“今后后计算机机将会作作为公共共设施提提供给公公众”,这一观观点已与与现在人人们对云云计算的的定义极极为相近近了,所所以我们们把McCarthy称为“云计算算之父”。MapReduce在在McCarthy提提出时并并没有考考虑到其其在分布布式系统统和大数数据上会会有如

24、此此大的应应用前景景,只是是作为一一种函数数操作来来定义的的。6.3.1MapReduce的的发展历历史2004年Google公司司的Dean发发表文章章将MapReduce这一一编程模模型在分分布式系系统中的的应用进进行了介介绍,从从此MapRuduce分布布式编程程模型进进入了人人们的视视野。可以认为为分布式式MapReduce是由Google公公司首先先提出的的。Hadoop跟跟进了Google的的这一思思想,可可以认为为Hadoop是一个个开源版版本的Google系系统,正正是由于于Hadoop的跟进进才使普普通用户户得以开开发自己己的基于于MapReduce框架的的云计算算应用系系统

25、。6.3.2MapReduce的的基本工工作过程程MapReduce是是一种处处理大数数据集的的编程模模式,它它借鉴了了最早出出现在LISP语言和和其他函函数语言言中的map和和reduce操作,MapReduce的基本本过程为为:用户通过过map函数处处理key/value对,从而产产生一系系列不同同的key/value对,reduce函数将将key值相同同的key/value对进进行合并并。现实实中的很很多处理理任务都都可以利利用这一一模型进进行描述述。通过过MapReduce框架能能实现基基于数据据切分的的自动并并行计算算,大大大简化了了分布式式编程的的难度,并为在在相对廉廉价的商商品化

26、服服务器集集群系统统上实现现大规模模的数据据处理提提供了可可能。6.3.2MapReduce的的基本工工作过程程MapReduce的的过程其其实非常常简单,我们用用一个实实际的例例子来说说明MapReduce的编编程模型型。假设设我们需需要对一一个文件件example.txt中中出现的的单词次次数进行行统计,这就是是著名的的wordcount例子,在这个个例子中中MapReduce的编程程模型可可以这样样来描述述:用户需要要处理的的文件example.txt已被被分为多多个数据据片存储储在集群群系统中中不同的的节点上上了,用用户先使使用一个个Map函数Map(example.txt,文文件内容

27、容),在在这个Map函函数中key值值为example.txt,key通常常是指一一个具有有唯一值值的标识识,value值就是是example.txt文文件中的的内容。Map操操作程序序通常会会被分布布到存有有文件example.txt数据据片段的的节点上上发起,这个Map操操作将产产生一组组中间key/value对对(word, count),6.3.2MapReduce的的基本工工作过程程这里的word代表出出现在文文件example.txt片段中中的任一一个单词词,每个个Map操作所所产生的的key/value对只代代表example.txt一部分分内容的的统计值值。Reduce函函数将

28、接接收集群群中不同同节点Map函函数生成成的中间间key/value对,并并将Key相同同的key/value对进进行合并并,在这这个例子子中Reduce函数数将对所所有key值相相同的value值进进行求和和合并,最后输输出的key/value对对就是(word,count),其中中count就就是这个个单词在在文件example.txt中出出现的总总的次数数。6.3.2MapReduce的的基本工工作过程程下面我们们通过一一个简单例子子来讲解MapReduce的的基本原原理。1任务务的描述述来自江苏苏、浙江江、山东东三个省省的9所所高校联联合举行行了一场场编程大大赛,每每个省有有3所高高校

29、参加加,每所所高校各各派5名名队员参参赛,各各所高校校的比赛赛平均成成绩如表表6.1所示。江苏省浙江省山东省南京大学90浙江大学95山东大学92东南大学93浙江工业大学84中国海洋大学85河海大学84宁波大学88青岛大学87表6.1原始比赛赛成绩6.3.2MapReduce的的基本工工作过程程我们可以以用如表表6.2所示的的形式来来表示成成绩,这这样每所所高校就就具备了了所属省省份和平平均分数数这两个个属性,即。南京大学:江苏省,90东南大学:江苏省,93河海大学:江苏省,84浙江大学:浙江省,95浙江工业大学:浙江省,84宁波大学:浙江省,88山东大学:山东省,92中国海洋大学:山东省,85

30、青岛大学:山东省,87表6.2增加属性性信息后后的比赛赛成绩6.3.2MapReduce的的基本工工作过程程统计各个个省份高高校的平平均分数数时,高高校的名名称并不不是很重重要,我我们略去去高校名名称,如如表6.3所示示。江苏省,90江苏省,93江苏省,84浙江省,95浙江省,84浙江省,88山东省,92山东省,85山东省,87表6.3略去高校校名称后后的比赛赛成绩接下来对对各个省省份的高高校的成成绩进行行汇总,如表6.4所所示。江苏省,90、93、84浙江省,95、84、88山东省,92、85、87表6.4各省比赛赛成绩汇汇总6.3.2MapReduce的的基本工工作过程程计算求得得各省高高

31、校的平平均值如如表6.5所示示。表6.5各省平均均成绩江苏省,89浙江省,89山东省,88以上为计计算各省省平均成成绩的主主要步骤骤,我们们可以用用MapReduce来实现现,其详详细步骤骤如下:2任务务的MapReduce实现现MapReduce包包含Map、Shuffle和Reduce三个个步骤,其中Shuffle由Hadoop自动动完成,Hadoop的使用用者可以以无需了了解并行行程序的的底层实实现,只只需关注注Map和Reduce的实实现。6.3.2MapReduce的的基本工工作过程程1.MapInput:在Map部分,我们需需要输入入数数据,这这里Key是高高校的名名称,Value

32、是属属性值,即所属属省份和和平均分分数,如如表6.6所示示。Key:南京大学Value:江苏省,90Key:东南大学Value:江苏省,93Key:河海大学Value:江苏省,84Key:浙江大学Value:浙江省,95Key:浙江工业大学Value:浙江省,84Key:宁波大学Value:浙江省,88Key:山东大学Value:山东省,92Key:中国海洋大学Value:山东省,85Key:青岛大学Value:山东省,87表6.6MapInput数据6.3.2MapReduce的的基本工工作过程程2.MapOutput:对所属省省份平均均分数进进行重分分组,去去除高校校名称,将所属属省份变变

33、为Key,平平均分数数变为Value,如如表6.7所示示。Key:江苏省Value:90Key:江苏省Value:93Key:江苏省Value:84Key:浙江省Value:95Key:浙江省Value:84Key:浙江省Value:88Key:山东省Value:92Key:山东省Value:85Key:山东省Value:87表6.7MapOutput数据6.3.2MapReduce的的基本工工作过程程3.Shuffle Output:Shuffle由Hadoop自动动完成,其任务务是实现现Map,对Key进进行分组组,用户户可以获获得Value的列表表,即List,如如表6.8所示示。Key

34、:江苏省List:90、93、84Key:浙江省List:95、84、88Key:山东省List:92、85、87表6.8Shuffle Output数据4.ReduceInput:表6.8中的内内容将作作为Reduce任务务的输入入数据,即从Shuffle任务中中获得的的(Key,List)。6.3.2MapReduce的的基本工工作过程程5.ReduceOutput:Reduce任任务的功功能是完完成用户户的计算算逻辑,这里里的任务务是计算算每个省省份的高高校学生生的比赛赛平均成成绩,获获得的最最终结果果如表6.9所所示。江苏省,89 浙江省,89 山东省,88 表6.9ReduceOut

35、put数据6.3.3LISP中的MapReduce为了进一一步理解解MapReduce,我们们简单介介绍最早早使用Map和和Reduce的LISP语语言中的的Map和Reduce操作作。下面的LISP语句定定义的这这个Map操作作是将向向量(1 234 5)和向量量(10 987 6)进行相相乘的操操作,输输出也为为向量(1018242830)。(map vector#*#(123 45)#(10 987 6)-#(1018242830)这个Map操作作对应于于向量到到向量的的映射,两个向向量按乘乘积关系系进行映映射。6.3.3LISP中的MapReduce下面的LISP语句定定义的这这个Re

36、duce操作作是将向向量(1 234 567 8910)中中的元素素进行求求和的Reduce操操作,输输出结果果为55。(reduce #+#(12 345 678 910)-55这个Reduce操作作对应于于向量的的约简,它将向向量按求求和的关关系约简简为一个个值。可以看出出,在LISP语言中中Map和Reduce只是是作为一一种操作作定义,并没有有体现出出任何的的分布式式计算的的特征。6.3.4MapReduce的的特点MapReduce主主要具有有以下几几个特点:(1)需需要在集集群条件件下使用用。MapReduce的的主要作作用是实实现对大大数据的的分布式式处理,其设计计时的基基本要求

37、求就是在在大规模模集群条条件下的的(虽然然一些系系统可以以在单机机下运行行,但这这种条件件下只具具有仿真真运行的的意义),Google作为为分布式式MapReduce提出者者,它本本身就是是世界上上最大的的集群系系统,所所以MapReduce天然然需要在在集群系系统下运运行才能能有效。6.3.4MapReduce的的特点(2)需需要有相相应的分分布式文文件系统统的支持持。这里要注注意的是是单独的的MapReduce模式并并不具有有自动的的并行性性能,就就像它在在LISP语言言中的表表现一样样,它只只有与相相应的分分布式文文件系统统相结合合才能完完美地体体现MapReduce这种种编程框框架的优

38、优势。如Google系统对对应的分分布式文文件系统统为GFS,Hadoop系系统对应应的分布布式文件件系统为为HDFS。MapReduce能能实现计计算的自自动并行行化很大大程度上上是由于于分布式式文件系系统在对对文件存存储时就就实现了了对大数数据文件件的切分分,这种种并行方方法也叫叫数据并并行方法法。数据据并行方方法避免免了对计计算任务务本身的的人工切切分,降降低了编编程的难难度,而而像MPI往往往需要人人工对计计算任务务进行切切分,因因此分布布式编程程难度较较大。6.3.4MapReduce的的特点(3)可可以在商商品化集集群条件件下运行行,不需需要特别别的硬件件支持.和高性能能计算不不同

39、,基基于MapReduce的系系统往往往不需要要特别的的硬件支支持,按按Google的报道道,他们们的实验验系统中中的节点点就是基基于典型型的双核核X86的系统统,配置置24GB的的内存,网络为为百兆网网和千兆兆网构成成,存储储设备的的便宜的的IDE硬盘。6.3.4MapReduce的的特点(4)假假设节点点的失效效为正常常情况。传统的服服务器通通常被认认为是稳稳定的,但在服服务器数数量巨大大或采用用廉价服服务的条条件下,服务器器的实效效将变得得常见,所以通通常基于于MapReduce的分布布式计算算系统采采用了存存储备份份、计算算备份和和计算迁迁移等策策略来应应对,从从而实现现在单节节点不稳

40、稳定的情情况下保保持系统统整个的的稳定性性。6.3.4MapReduce的的特点(5)适适合对大大数据进进行处理理。由于基于于MapReduce的系统统并行化化是通过过数据切切分实现现的数据据并行,同时计计算程序序启动时时需要向向各节点点拷贝计计算程序序,过小小的文件件在这种种模式下下工作反反而会效效率低下下。Google的实实验也表表明一个个由150秒时时间完成成的计算算任务,程序启启动阶段段的时间间就花了了60秒秒,可以以想象,如果计计算任务务数据过过小,这这样的花花费是不不值得的的,同时时对过小小的数据据进行切切分也无无必要。所以MapReduce更更适合进进行大数数据的处处理。6.3.

41、4MapReduce的的特点(6)计计算向存存储迁移移。传统的高高性能计计算数据据集中存存储,计计算时数数据向计计算节点点拷贝,而基于于MapReduce的分布布式系统统在数据据存储时时就实现现了分布布式存储储,一个个较大的的文件会会被切分分成大量量较小的的文件存存储于不不同的节节点,系系统调度度机制在在启动计计算时会会将计算算程序尽尽可能分分发给需需要处理理的数据据所在的的节点。计算程程序的大大小通常常会比数数据文件件小的多多,所以以迁移计计算的网网络代价价要比迁迁移数据据小的多多。6.3.4MapReduce的的特点(7)MapReduce的的计算效效率会受受最慢的的Map任务影影响。由于

42、Reduce操作作的完成成需要等等待所有有Map任务的的完成,所以如如果Map任务务中有一一个任务务出现了了延迟,则整个个MapReduce操作将将受最慢慢的Map任务务的影响响。6.4实实现Map/Reduce的C语语言实例例Map/Reduce操作代代表了一一大类的的数据处处理操作作方式,为了让让大家对对Map/Reduce的工工作过程程有一个个直观的的了解,下面的的程序采采用C语语言实现现了一个个简单经经典的Map/Reduce计算,计算从控控制台输输入的字字符串中中单词的的计数,这一计计算过程程都是在在同一个个节点上上完成的的,并未未实现计计算的并并行化,历史上上的Lisp语语言也是是

43、运行在在单机的的上的程程序,这个例子子的主要要目的是是让大家家理解这这一操作作的过程程。程序序中的my_map()和my_reduce()函数数分别实实现了对对字符串串的Map和Reduce操操作。6.4实实现Map/Reduce的C语语言实例例程序6.1输入:this is mapreducehellomap hello reduce6.4实实现Map/Reduce的C语语言实例例输出:This is mapresults:This is reduceresults:此运行实实例中我我们从控控制台输输入字符符串“this is mapreducehellomap hello reduce”,

44、程序通通过Map和Reduce过过程对字字符串的的的单词词出现的的频率进进行统计计,并输输出了结结果,这这是一个个典型的的Map/Reduce过程程。6.5建建立Hadoop开开发环境境本节使用用三个Linux虚拟拟机来构构建Hadoop集群群环境,其中一一个虚拟拟机作为为NameNode(Master节点),另外外两个虚虚拟机作作为DataNode(Slave节点),如图图6.5所示。在3个个节点下下3个虚虚拟机的的机器名名和IP地址信信息如下下。虚拟机1:主机机名为vm1,IP为为01,作为为NameNode使使用;虚拟机2:主机机名为vm2,IP为为192.16

45、8.122.102,作为为DataNode使使用;虚拟机3:主机机名为vm3,IP为为03,作为为DataNode使使用。图6.5Hadoop集集群配置置6.5.1相相关准备备工作6.5.1相相关准备备工作6.5.1相相关准备备工作(4)新新建用户户“hadoop”。在每个节节点上使使用useradd指指令新建建一个用用户hadoop,并并设置密密码。useradd hadooppasswdhadoop(5)永永久关闭闭每个节节点的防防火墙(root权限限)。在每个节节点上执执行以下下指令,这样将将永久性性的关闭闭每个阶阶段的防防火墙chkconfigiptables

46、off/永永久性生生效,重重启后不不会复原原6.5.1相相关准备备工作(6)配配置ssh实现现Hadoop结点间间用户的的无密码码访问Hadoop需需要在各各个结点点间进行行信息传传递,因因此需要要实现结结点间的的无密码码访问,这与采采用MPI进行行并行程程序设计计相同,否则系系统会不不停地向向你请求求密码验验证。这里的配配置在各各个节点点的hadoop用户户下进行行。配置过程程与MPI部分分的配置置过程相相关,这这里不再再详述,配置完完成后使使用ssh指令令可以在在三个虚虚拟机之之间实现现无密码码访问。6.5.2JDK的安装装配置Hadoop是是采用Java编写的的,每个个虚拟机机上均需需要

47、安装装Java的JDK,JDK的安装装配置需需在root用用户下进进行,具具体步骤骤如下。(1)在在Sun官方网网站下载载JDK软件包包jdk-7u45-linux-x64.tar.gz。(2)新新建目录录/usr/java,将下下载的JDK软软件包进进行进行行解压。mkdir/usr/javatarzxvfjdk-7u45-linux-x64.tar.gz6.5.2JDK的安装装配置(3)配配置Java环环境变量量。#set javaenvironmentexportJAVA_HOME=/usr/java/jdk1.7.0_45exportJRE_HOME=/usr/java/jdk1.7.

48、0_45/jreexportCLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATHexportPATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH6.5.2JDK的安装装配置(4)保保存了Java环境变变量之后后,在命命令行中中键入如如下命令令,使环环境变量量生效:source/etc/profile/使环境境变量设设置生效效通过which命令测测试JDK的安安装是否否成功:whichjava系统显示示如下信信息:/usr/java/jdk1.6.0_12/bin/java此时JDK配置置成功,接下来来可进行行Hadoo

49、p的安装装配置。6.5.2JDK的安装装配置程序6.2publicclasstestpublicstatic voidmain(Stringargs )System.out.println(Thisisahadooptestprogram!JDKsuccessed!);6.5.2JDK的安装装配置编译测试试程序:javactest.java运行测试试程序:java test如果输出出为:This is ahadoop testprogram!JDKsuccessed!表明JDK已成成功安装装,并能能成功编编译执行行Java程序序。6.5.3下下载、解解压Hadoop,配配置Hadoop环境境变

50、量Hadoop集集群中每每个节点点的安装装、配置置是相同同的,我我们可以以现在一一个虚拟拟机上进进行安装装、配置置,然后后将其复复制到其其他节点点的相应应目录。将hadoop-0.21.0.tar.gz放放置在vm1的的/home/hadoop目录中中,用hadoop用用户对其其进行解解压缩:cd/home/hadooptarzxvfhadoop-0.21.0.tar.gz6.5.3下下载、解解压Hadoop,配配置Hadoop环境境变量把Hadoop的安装装路径添添加到“/etc/profile”中,在文件件的末尾尾添下面面的代码码,每个个节点均均需要进进行此步步配置。#hadoop env

51、ironmentexportHADOOP_HOME=/usr/java/jdk1.7.0_45exportPATH=$PATH:$HADOOP_HOME/bin保存了Hadoop环环境变量量之后,在命令令行中键键入如下下命令,使环境境变量生生效:source/etc/profile/使环环境变量量设置生生效6.5.4修修改Hadoop配置置文件Hadoop的的配置文文件存于于conf文件件夹中,我们需需要对该该文件夹夹中以下下文件进进行修改改:hadoop-env.sh、core-site.xml、mapred-site.xml、masters、slaves。(1)修修改hadoop-env.

52、sh文文件。Hadoop的的Java环境境变量在在hadoop-env.sh中进进行设置置。使用用vim打开hadoop-env.sh文件,找到Java环境变变量的设设置位置置,将其其改为JDK的的安装地地址,保保存并退退出。exportJAVA_HOME=/usr/java/jdk1.7.0_456.5.4修修改Hadoop配置置文件(2)修改core-site.xml文件。core-site.xml用于设置置Hadoop集群的HDFS的地址和和端口号号,以及及用于保保存HDFS信息的tmp文件夹,对HDFS进行重新新格式化化的时候候先行删删除tmp中的文件件。新建tmp文件夹:mkdir/

53、home/hadoop/hadoop-0.21.0/tmp使用vim打打开core-site.xml文文件,在之之间添加加以下代代码:6.5.4修修改Hadoop配置置文件hadoop.tmp.dir/home/hadoop/hadoop-0.21.0/tmpfs.defaultFShdfs:/01/:9000其中的IP地址址需配置置为集群群的NameNode(Master)节节点的IP,这里“01”。6.5.4修修改Hadoop配置置文件(3)修改改mapred-site.xml文件。在mapred-site.xml文件的的在之间间添加以以

54、下代码码,配置置JobTracker的主主机名和和端口。mapreduce.jobtracker.address01:9001NameNode6.5.4修修改Hadoop配置置文件(4)修修改masters文文件。使用vim打开开masters文件件,写入入NameNode(Master)节点点的主机机名,这这里为vm1,保存并并退出。vm1(5)修修改slaves文件件。使用vim打开开slaves文件,写入DataNode(Slaver)节点的的主机名名,这里里为vm1、vm2,保存并并退出。Vm2vm36.5.5将将配置好好的Hadoop文件件复制到

55、到其他节节点到了这里里,我们们已经安安装、配配置了一一个Hadoop节点点,Hadoop集群群中每个个节点的的安装、配置是是相同的的,这里里需要将将vm1上的Hadoop文文件夹整整体复制制到其他他的节点点,执行行以下指指令:scp-r/home/hadoop/hadoop-0.21.0hadoopvm2:/home/hadoop/scp-r/home/hadoop/hadoop-0.21.0hadoopvm3:/home/hadoop/格式化NameNode在正式启启动Hadoop之前前,需要要执行以以下指令令,对Hadoop的的分布式式文件进进行初始始化:cd/home/hadoop/hadoop-0.21

温馨提示

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

评论

0/150

提交评论