Hadoop分布式大数据系统课件.ppt

上传人:牧羊曲112 文档编号:4009560 上传时间:2023-03-31 格式:PPT 页数:84 大小:3.99MB
返回 下载 相关 举报
Hadoop分布式大数据系统课件.ppt_第1页
第1页 / 共84页
Hadoop分布式大数据系统课件.ppt_第2页
第2页 / 共84页
Hadoop分布式大数据系统课件.ppt_第3页
第3页 / 共84页
Hadoop分布式大数据系统课件.ppt_第4页
第4页 / 共84页
Hadoop分布式大数据系统课件.ppt_第5页
第5页 / 共84页
点击查看更多>>
资源描述

《Hadoop分布式大数据系统课件.ppt》由会员分享,可在线阅读,更多相关《Hadoop分布式大数据系统课件.ppt(84页珍藏版)》请在三一办公上搜索。

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

2、系统的原型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.2 JDK的安装配置6.5.3下载、解压Hadoop,配置Hadoop环境变量6.5.4修改Hadoop配置文件6.5.5将配置好的Hadoop文件复制到其他节点6.5.6启动、停止Hadoop6.5.7在Hadoop系统上运行测试

3、程序WordCount,Hadoop是由Apache软件基金会研发的一种开源、高可靠、伸缩性强的分布式计算系统,主要用于对大于1TB的海量数据的处理。Hadoop采用Java语言开发,是对Google的MapReduce核心技术的开源实现。目前Hadoop的核心模块包括系统HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)和分布式计算框架MapReduce,这一结构实现了计算和存储的高度耦合,十分有利于面向数据的系统架构,因此已成为大数据技术领域的事实标准。,Hadoop设计时有以下的几点假设:服务器失效是正常的;存储和处理的数据是海量的;文件

4、不会被频繁写入和修改;机柜内的数据传输速度大于机柜间的数据传输速度;海量数据的情况下移动计算比移动数据更高效。,6.1Hadoop概述,Hadoop是Apache开源组织的分布式计算系统,其分为第一代Hadoop和第二代Hadoop。第一代Hadoop包含0.20.x、0.21.x、0.22.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本版发展路线,6.1Hadoop概述,Hadoop与

5、MPI在数据处理上的差异主要体现在数据存储与数据处理在系统中位置不同,MPI是计算与存储分离,Hadoop是计算向存储迁移,如图6.2所示。,图6.2Hadoop与MPI在数据处理上的差异,6.1Hadoop概述,在MPI中数据存储的节点和数据处理的节点往往是不同的,一般在每次计算开始时MPI需要从数据存储节点读取需要处理的数据分配给各个计算节点对数据进行处理,因此MPI中数据存储和数据处理是分离的。对于计算密集型的应用MPI能表现出良好的性能,但对于处理TB级数据的数据密集型应用由于网络数据传输速度很慢,MPI的性能会大大降低,甚至会到不可忍受的地步,所以对于构建在MPI上的并行计算系统网络

6、通讯速度一直是一个重要的性能指标,用“计算换通信”也是MPI并行程序设计中的基本原则。,6.1Hadoop概述,在Hadoop中由于有HDFS文件系统的支持,数据是分布式存储在各个节点的,计算时各节点读取存储在自己节点的数据进行处理,从而避免了大量数据在网络上的传递,实现“计算向存储的迁移”。,6.2HDFS,Hadoop系统实现对大数据的自动并行处理,是一种数据并行方法,这种方法实现自动并行处理时需要对数据进行划分,而对数据的划分在Hadoop系统中从数据的存储就开始了,因此文件系统是Hadoop系统的重要组成部分,也是Hadoop实现自动并行框架的基础。Hadoop的文件系统称为HDFS(

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

8、e大表”、“MapReduce算法”,有了自己的文件系统,谷歌就可以有效地组织庞大的数据、服务器和存储,并用它们工作。作为谷歌“三宝”的其中之一,GFS的技术优势不言而喻。,6.2.1HDFS文件系统的原型GFS,GFS为分布式结构,它是一个高度容错网络文件系统,主要由一个Master(主)和众多chunkserver(大块设备)构成的,体系结构如图6.3所示。,图6.3GFS的体系结构,6.2.1HDFS文件系统的原型GFS,下面简单描述一下GFS的工作过程。(1)客户端使用固定大小的块将应用程序指定的文件名和字节偏移转换成文件的一个块索引,向Master发送包含文件名和块索引的请求。(2)

9、Master收到客户端发来的请求,Master向块服务器发出指示,同时时刻监控众多chunkserver的状态。chunkserver缓存Master从客户端收到的文件名和块索引等信息。,6.2.1HDFS文件系统的原型GFS,(3)Master通过和chunkserver的交互,向客户端发送chunk-handle和副本位置。其中文件被分成若干个块,而每个块都是由一个不变的、全局惟一的64位的chunk-handle标识。Handle是由Master在块创建时分配的。而出于安全性考虑,每一个文件块都要被复制到多个chunkserver上,一般默认3个副本。(4)客户端向其中的一个副本发出请求

10、,请求指定了chunk handle(chunkserver以chunk handle标识chunk)和块内的一个字节区间。(5)客户端从chunkserver获得块数据,任务完成。,6.2.1HDFS文件系统的原型GFS,通常Client可以在一个请求中询问多个chunk的地址,而Master也可以很快回应这些请求。GFS是可以被多个用户同时访问的,一般情况下,Application和chunkserver是可以在同一台机子上的,主要的数据流量是通过Application和chunkserver之间,数据访问的本地性极大地减少了Application与Master之间的交互访问,减少了Mas

11、ter的负荷量,提高了文件系统的性能。,6.2.1HDFS文件系统的原型GFS,客户端从来不会从Master读和写文件数据。客户端只是询问Master它应该和哪个 chunkserver联系。Client在一段限定的时间内将这些信息缓存,在后续的操作中客户端直接和chunkserver交互。由于Master对于读和写的操作极少,所以极大地减小了Master的工作负荷,真正提高了Master的利用性能。Master保存着三类元数据(metadata):文件名和块的名字空间、从文件到块的映射、副本位置。所有的metadata都放在内存中。操作日志的引入可以更简单、更可靠地更新Master的信息。,

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

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

14、效。(6)GFS相对于HDFS稳定性是无庸置疑的,并在Google系统中得到了采用且稳定的运行。,6.2.2HDFS文件的基本结构,HDFS是一种典型的主从式的分布式文件系统,该文件系统完全是仿照Google的GFS文件系统而设计的,HDFS的架构如图6.4所示。,图6.4 HDFS的架构,6.2.2HDFS文件的基本结构,HDFS由一个名叫Namenode的主节点和多个名叫Datanode的子节点组成。Namenode存储着文件系统的元数据,这些元数据包括文件系统的名字空间等,向用户映射文件系统,并负责管理文件的存储等服务,但实际的数据并不存放在Namenode。Namenode的作用就像是

15、文件系统的总指挥,并向访问文件系统的客户机提供文件系统的映射,这种做法并不是Google或Hadoop的创新,这和传统并行计算系统中的单一系统映像(Single System Image)的做法相同。HDFS中的Datanode用于实际对数据的存放,对Datanode上数据的访问并不通过Namemode,而是与用户直接建立数据通信。Hadoop启动后我们能看到Namenode和Datanode这两个进程。,6.2.2HDFS文件的基本结构,HDFS的工作过程是这样的:用户请求创建文件的指令由Namenode进行接收,Namenode将存储数据的Datanode的IP返回给用户,并通知其他接收副

16、本的Datanode,由用户直接与Datanode进行数据传送。Namenode同时存储相关的元数据。整个文件系统采用标准TCP/IP协议通信,实际是架设在Linux文件系统上的一个上层文件系统。HDFS上的一个典型文件大小一般都在G字节至T字节。,6.2.2HDFS文件的基本结构,主从式是云计算系统的一种典型架构方法,系统通过主节点屏蔽底层的复杂结构,并向用户提供方便的文件目录映射。有些改进的主从式架构可能会采用分层的主从式方法,以减轻主节点的负荷。,6.2.3HDFS的存储过程,HDFS在对一个文件进行存储时有两个重要的策略:一个是副本策略,一个是分块策略。副本策略保证了文件存储的高可靠性

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

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

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

20、进行“符号运算”。LISP是一种表处理语言,其逻辑简单但结构不同于其他的高级语言。1960年,McCarthy更是极有预见性地提出:“今后计算机将会作为公共设施提供给公众”,这一观点已与现在人们对云计算的定义极为相近了,所以我们把McCarthy称为“云计算之父”。MapReduce在McCarthy提出时并没有考虑到其在分布式系统和大数据上会有如此大的应用前景,只是作为一种函数操作来定义的。,6.3.1MapReduce的发展历史,2004年Google公司的Dean发表文章将MapReduce这一编程模型在分布式系统中的应用进行了介绍,从此MapRuduce分布式编程模型进入了人们的视野。

21、可以认为分布式MapReduce是由Google公司首先提出的。Hadoop跟进了Google的这一思想,可以认为Hadoop是一个开源版本的Google系统,正是由于Hadoop的跟进才使普通用户得以开发自己的基于MapReduce框架的云计算应用系统。,6.3.2MapReduce的基本工作过程,MapReduce是一种处理大数据集的编程模式,它借鉴了最早出现在LISP语言和其他函数语言中的map和reduce操作,MapReduce的基本过程为:用户通过map函数处理key/value对,从而产生一系列不同的key/value对,reduce函数将key值相同的key/value对进行合

22、并。现实中的很多处理任务都可以利用这一模型进行描述。通过MapReduce框架能实现基于数据切分的自动并行计算,大大简化了分布式编程的难度,并为在相对廉价的商品化服务器集群系统上实现大规模的数据处理提供了可能。,6.3.2MapReduce的基本工作过程,MapReduce的过程其实非常简单,我们用一个实际的例子来说明MapReduce的编程模型。假设我们需要对一个文件example.txt中出现的单词次数进行统计,这就是著名的wordcount例子,在这个例子中MapReduce的编程模型可以这样来描述:用户需要处理的文件example.txt已被分为多个数据片存储在集群系统中不同的节点上了

23、,用户先使用一个Map函数Map(example.txt,文件内容),在这个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函数将接收集群中不

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

25、MapReduce的基本工作过程,我们可以用如表6.2所示的形式来表示成绩,这样每所高校就具备了所属省份和平均分数这两个属性,即。,表6.2增加属性信息后的比赛成绩,6.3.2MapReduce的基本工作过程,统计各个省份高校的平均分数时,高校的名称并不是很重要,我们略去高校名称,如表6.3所示。,表6.3略去高校名称后的比赛成绩,接下来对各个省份的高校的成绩进行汇总,如表6.4所示。,表6.4各省比赛成绩汇总,6.3.2MapReduce的基本工作过程,计算求得各省高校的平均值如表6.5所示。,表6.5各省平均成绩,以上为计算各省平均成绩的主要步骤,我们可以用MapReduce来实现,其详细

26、步骤如下:2任务的MapReduce实现MapReduce包含Map、Shuffle和Reduce三个步骤,其中Shuffle由Hadoop自动完成,Hadoop的使用者可以无需了解并行程序的底层实现,只需关注Map和Reduce的实现。,6.3.2MapReduce的基本工作过程,1.Map Input:在Map部分,我们需要输入数据,这里Key是高校的名称,Value是属性值,即所属省份和平均分数,如表6.6所示。,表6.6Map Input数据,6.3.2MapReduce的基本工作过程,2.Map Output:对所属省份平均分数进行重分组,去除高校名称,将所属省份变为Key,平均分数

27、变为Value,如表6.7所示。,表6.7Map Output数据,6.3.2MapReduce的基本工作过程,3.Shuffle Output:Shuffle由Hadoop自动完成,其任务是实现Map,对Key进行分组,用户可以获得Value的列表,即List,如表6.8所示。,表6.8Shuffle Output数据,4.Reduce Input:表6.8中的内容将作为Reduce任务的输入数据,即从Shuffle任务中获得的(Key,List)。,6.3.2MapReduce的基本工作过程,5.Reduce Output:Reduce任务的功能是完成用户的计算逻辑,这里的任务是计算每个省

28、份的高校学生的比赛平均成绩,获得的最终结果如表6.9所示。,表6.9Reduce Output数据,6.3.3LISP中的MapReduce,为了进一步理解MapReduce,我们简单介绍最早使用Map和Reduce的LISP语言中的Map和Reduce操作。下面的LISP语句定义的这个Map操作是将向量(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)这个Map操作对应于向量到向量的映射,两个向量按乘积关系进行映射。,

29、6.3.3LISP中的MapReduce,下面的LISP语句定义的这个Reduce操作是将向量(1 2 3 4 5 6 7 8 9 10)中的元素进行求和的Reduce操作,输出结果为55。(reduce#+#(1 2 3 4 5 6 7 8 9 10)-55这个Reduce操作对应于向量的约简,它将向量按求和的关系约简为一个值。可以看出,在LISP语言中Map和Reduce只是作为一种操作定义,并没有体现出任何的分布式计算的特征。,6.3.4MapReduce的特点,MapReduce主要具有以下几个特点:(1)需要在集群条件下使用。MapReduce的主要作用是实现对大数据的分布式处理,其

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

31、S。MapReduce能实现计算的自动并行化很大程度上是由于分布式文件系统在对文件存储时就实现了对大数据文件的切分,这种并行方法也叫数据并行方法。数据并行方法避免了对计算任务本身的人工切分,降低了编程的难度,而像MPI往往需要人工对计算任务进行切分,因此分布式编程难度较大。,6.3.4MapReduce的特点,(3)可以在商品化集群条件下运行,不需要特别的硬件支持.和高性能计算不同,基于MapReduce的系统往往不需要特别的硬件支持,按Google的报道,他们的实验系统中的节点就是基于典型的双核X86的系统,配置24GB的内存,网络为百兆网和千兆网构成,存储设备的便宜的IDE硬盘。,6.3.

32、4MapReduce的特点,(4)假设节点的失效为正常情况。传统的服务器通常被认为是稳定的,但在服务器数量巨大或采用廉价服务的条件下,服务器的实效将变得常见,所以通常基于MapReduce的分布式计算系统采用了存储备份、计算备份和计算迁移等策略来应对,从而实现在单节点不稳定的情况下保持系统整个的稳定性。,6.3.4MapReduce的特点,(5)适合对大数据进行处理。由于基于MapReduce的系统并行化是通过数据切分实现的数据并行,同时计算程序启动时需要向各节点拷贝计算程序,过小的文件在这种模式下工作反而会效率低下。Google的实验也表明一个由150秒时间完成的计算任务,程序启动阶段的时间

33、就花了60秒,可以想象,如果计算任务数据过小,这样的花费是不值得的,同时对过小的数据进行切分也无必要。所以MapReduce更适合进行大数据的处理。,6.3.4MapReduce的特点,(6)计算向存储迁移。传统的高性能计算数据集中存储,计算时数据向计算节点拷贝,而基于MapReduce的分布式系统在数据存储时就实现了分布式存储,一个较大的文件会被切分成大量较小的文件存储于不同的节点,系统调度机制在启动计算时会将计算程序尽可能分发给需要处理的数据所在的节点。计算程序的大小通常会比数据文件小的多,所以迁移计算的网络代价要比迁移数据小的多。,6.3.4MapReduce的特点,(7)MapRedu

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

35、操作的过程。程序中的my_map()和my_reduce()函数分别实现了对字符串的Map和Reduce操作。,6.4实现Map/Reduce的C语言实例,程序6.1输入:this is map reduce hello map hello reduce,6.4实现Map/Reduce的C语言实例,输出:This is map results:This is reduce results:,此运行实例中我们从控制台输入字符串“this is map reduce hello map hello reduce”,程序通过Map和Reduce过程对字符串的的单词出现的频率进行统计,并输出了结果,这

36、是一个典型的Map/Reduce过程。,6.5建立Hadoop开发环境,本节使用三个Linux虚拟机来构建Hadoop集群环境,其中一个虚拟机作为NameNode(Master节点),另外两个虚拟机作为DataNode(Slave节点),如图6.5所示。在3个节点下3个虚拟机的机器名和IP地址信息如下。虚拟机1:主机名为vm1,IP为192.168.122.101,作为NameNode使用;虚拟机2:主机名为vm2,IP为192.168.122.102,作为DataNode使用;虚拟机3:主机名为vm3,IP为192.168.122.103,作为DataNode使用。,图6.5 Hadoop集

37、群配置,6.5.1相关准备工作,(1)准备虚拟机的操作系统。首先准备3个安装了操作系统的虚拟机,本节使用的虚拟机上安装的操作系统均为CentOS 6.4(64位),先安装一机虚拟机,然后Clone两个出另外两个虚拟机。CentOS的官方网站:www.centos.org,6.5.1相关准备工作,(2)下载Hadoop系统。本节我们使用Hadoop的稳定版本0.21.0。CentOS的官方网站:www.hadoop.apache.org(3)下载JDK。JDK的版本为1.7.0_45(64位)。下载地址:,6.5.1相关准备工作,(4)新建用户“hadoop”。在每个节点上使用useradd指令

38、新建一个用户hadoop,并设置密码。useradd hadoop passwd hadoop(5)永久关闭每个节点的防火墙(root权限)。在每个节点上执行以下指令,这样将永久性的关闭每个阶段的防火墙 chkconfig iptables off/永久性生效,重启后不会复原,6.5.1相关准备工作,(6)配置ssh实现Hadoop结点间用户的无密码访问Hadoop需要在各个结点间进行信息传递,因此需要实现结点间的无密码访问,这与采用MPI进行并行程序设计相同,否则系统会不停地向你请求密码验证。这里的配置在各个节点的hadoop用户下进行。配置过程与MPI部分的配置过程相关,这里不再详述,配置

39、完成后使用ssh指令可以在三个虚拟机之间实现无密码访问。,6.5.2 JDK的安装配置,Hadoop是采用Java编写的,每个虚拟机上均需要安装Java的JDK,JDK的安装配置需在root用户下进行,具体步骤如下。(1)在Sun官方网站下载JDK软件包jdk-7u45-linux-x64.tar.gz。(2)新建目录/usr/java,将下载的JDK软件包进行进行解压。mkdir/usr/java tar zxvf jdk-7u45-linux-x64.tar.gz,6.5.2 JDK的安装配置,(3)配置Java环境变量。#set java environment export JAVA_

40、HOME=/usr/java/jdk1.7.0_45 export JRE_HOME=/usr/java/jdk1.7.0_45/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH,6.5.2 JDK的安装配置,(4)保存了Java环境变量之后,在命令行中键入如下命令,使环境变量生效:source/etc/profile/使环境变量设置生效通过which命令测试JDK的安装是否成功:which java系统显示如下信息:/usr

41、/java/jdk1.6.0_12/bin/java此时JDK配置成功,接下来可进行Hadoop的安装配置。,6.5.2 JDK的安装配置,程序6.2public class test public static void main(String args)System.out.println(This is a hadoop test program!JDK successed!);,6.5.2 JDK的安装配置,编译测试程序:javac test.java运行测试程序:java test如果输出为:This is a hadoop test program!JDK successed!表明

42、JDK已成功安装,并能成功编译执行Java程序。,6.5.3下载、解压Hadoop,配置Hadoop环境变量,Hadoop集群中每个节点的安装、配置是相同的,我们可以现在一个虚拟机上进行安装、配置,然后将其复制到其他节点的相应目录。将hadoop-0.21.0.tar.gz放置在vm1的/home/hadoop目录中,用hadoop用户对其进行解压缩:cd/home/hadoop tar zxvf hadoop-0.21.0.tar.gz,6.5.3下载、解压Hadoop,配置Hadoop环境变量,把Hadoop的安装路径添加到“/etc/profile”中,在文件的末尾添下面的代码,每个节点

43、均需要进行此步配置。#hadoop environment export HADOOP_HOME=/usr/java/jdk1.7.0_45 export PATH=$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-

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

45、.21.0/tmp使用vim打开core-site.xml文件,在 之间添加以下代码:,6.5.4修改Hadoop配置文件,hadoop.tmp.dir/home/hadoop/hadoop-0.21.0/tmp fs.defaultFS hdfs:/192.168.122.101/:9000其中的IP地址需配置为集群的NameNode(Master)节点的IP,这里“192.168.122.101”。,6.5.4修改Hadoop配置文件,(3)修改mapred-site.xml文件。在mapred-site.xml文件的在 之间添加以下代码,配置JobTracker的主机名和端口。mapre

46、duce.jobtracker.address http:/192.168.122.101:9001 NameNode,6.5.4修改Hadoop配置文件,(4)修改masters文件。使用vim打开masters文件,写入NameNode(Master)节点的主机名,这里为vm1,保存并退出。vm1(5)修改slaves文件。使用vim打开slaves文件,写入DataNode(Slaver)节点的主机名,这里为vm1、vm2,保存并退出。Vm2 vm3,6.5.5将配置好的Hadoop文件复制到其他节点,到了这里,我们已经安装、配置了一个Hadoop节点,Hadoop集群中每个节点的安装、

47、配置是相同的,这里需要将vm1上的Hadoop文件夹整体复制到其他的节点,执行以下指令:scp-r/home/hadoop/hadoop-0.21.0 hadoopvm2:/home/hadoop/scp-r/home/hadoop/hadoop-0.21.0 hadoopvm3:/home/hadoop/格式化NameNode在正式启动Hadoop之前,需要执行以下指令,对Hadoop的分布式文件进行初始化:cd/home/hadoop/hadoop-0.21.0/bin./hadoop namenode format顺利执行此格式化指令后,会显示如下信息:14/01/04 21:21:20

48、 INFO common.Storage:Storage directory/home/hadoop/hadoop-0.21.0/tmp/dfs/name has been successfully formatted.,6.5.6启动、停止Hadoop,进入/home/hadoop/hadoop-0.21.0/bin/,可以看到文件夹中有很多的启动脚本。执行start-all.sh脚本,启动Hadoop。cd/home/hadoop/hadoop-0.21.0/bin./start-all.sh,6.5.6启动、停止Hadoop,执行之后,可以看到如下信息:从中我们可以看出,此脚本启动了Na

49、meNode、SecondaryName、JobTracker、两个DataNode以及两个TaskTracker。,6.5.6启动、停止Hadoop,在NameNode(192.168.122.101)上输入jps命令查看启动进程情况:11850 SecondaryNameNode11650 NameNode11949 JobTracker12132 Jps在DataNode(192.168.122.102)、DataNode(192.168.122.102)上输入jps命令查看启动进程情况:8727 DataNode8819 TaskTracker8958 Jps到此Hadoop已经配置成

50、功,不同的Hadoop版本配置方法会有所不同。Hadoop的停止命令如下:bin/stop-all.sh,(1)先在hadoop用户当前目录下新建文件夹WordCount,在其中建立两个测试文件file1.txt,file1.txt。自行在两个文件中填写内容。file1.txt文件内容为:This is the first hadoop test program!file2.txt文件内容为:This program is not very difficult,but this program is a common hadoop program!(2)在Hadoop文件系统上新建文件夹“in

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号