版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、云計(jì)算與大數(shù)據(jù)技術(shù) 人民郵電出版社王鵬 黃焱 安俊秀 張逸琴 編著 目錄錄第1章云云計(jì)計(jì)算與大大數(shù)據(jù)基基礎(chǔ)第2章云云計(jì)計(jì)算與大大數(shù)據(jù)的的相關(guān)技技術(shù)第3章虛虛擬擬化技術(shù)術(shù)第4章集集群群系統(tǒng)基基礎(chǔ)第5章MPI面面向計(jì)算算第6章Hadoop分分布式大大數(shù)據(jù)系系統(tǒng)第7章HPCC面向數(shù)數(shù)據(jù)的高高性能計(jì)計(jì)算集群群系統(tǒng)第8章Storm基于于拓?fù)涞牡牧鲾?shù)據(jù)據(jù)實(shí)時(shí)計(jì)計(jì)算系統(tǒng)統(tǒng)第9章服服務(wù)務(wù)器與數(shù)數(shù)據(jù)中心心第10章章云云計(jì)算大大數(shù)據(jù)仿仿真技術(shù)術(shù)CONTENTS第6章Hadoop分分布式大大數(shù)據(jù)系系統(tǒng)第6章Hadoop分布式大大數(shù)據(jù)系系統(tǒng)云計(jì)算算與大數(shù)數(shù)據(jù)技術(shù)術(shù)第6章Hadoop分布布式大數(shù)數(shù)據(jù)系統(tǒng)統(tǒng)6.1Hado
2、op概述6.2HDFS6.2.1HDFS文件系系統(tǒng)的原原型GFS6.2.2HDFS文件的的基本結(jié)結(jié)構(gòu)6.2.3HDFS的存儲(chǔ)儲(chǔ)過程6.3MapReduce編程框框架6.3.1MapReduce的的發(fā)展歷歷史6.3.2MapReduce的的基本工工作過程程6.3.3LISP中的MapReduce6.3.4MapReduce的的特點(diǎn)6.4實(shí)實(shí)現(xiàn)Map/Reduce的C語語言實(shí)例例6.5建建立Hadoop開開發(fā)環(huán)境境6.5.1相相關(guān)準(zhǔn)備備工作6.5.2JDK的安裝裝配置6.5.3下下載、解解壓Hadoop,配配置Hadoop環(huán)境境變量6.5.4修修改Hadoop配置置文件6.5.5將將配置好好的Ha
3、doop文件件復(fù)制到到其他節(jié)節(jié)點(diǎn)6.5.6啟啟動(dòng)、停停止Hadoop6.5.7在在Hadoop系統(tǒng)上上運(yùn)行測測試程序序WordCountHadoop是由Apache軟件件基金會(huì)會(huì)研發(fā)的的一種開開源、高高可靠、伸縮性性強(qiáng)的分布式計(jì)計(jì)算系統(tǒng)統(tǒng),主要用用于對(duì)大于1TB的海量數(shù)數(shù)據(jù)的處處理。Hadoop采采用Java語言開開發(fā),是對(duì)Google的的MapReduce核心技技術(shù)的開開源實(shí)現(xiàn)現(xiàn)。目前Hadoop的核心模塊塊包括系統(tǒng)HDFS(Hadoop Distributed FileSystem,Hadoop分布布式文件件系統(tǒng))和分布式計(jì)計(jì)算框架架MapReduce,這一結(jié)結(jié)構(gòu)實(shí)現(xiàn)現(xiàn)了計(jì)算和存存儲(chǔ)的高高
4、度耦合合,十分有有利于面向數(shù)據(jù)據(jù)的系統(tǒng)架架構(gòu),因因此已成成為大數(shù)數(shù)據(jù)技術(shù)術(shù)領(lǐng)域的的事實(shí)標(biāo)標(biāo)準(zhǔn)。Hadoop設(shè)設(shè)計(jì)時(shí)有有以下的的幾點(diǎn)假假設(shè):服務(wù)器失失效是正正常的;存儲(chǔ)和處處理的數(shù)數(shù)據(jù)是海海量的;文件不會(huì)會(huì)被頻繁繁寫入和和修改;機(jī)柜內(nèi)的的數(shù)據(jù)傳傳輸速度度大于機(jī)機(jī)柜間的的數(shù)據(jù)傳傳輸速度度;海量數(shù)據(jù)據(jù)的情況況下移動(dòng)動(dòng)計(jì)算比比移動(dòng)數(shù)數(shù)據(jù)更高高效。6.1Hadoop概述Hadoop是是Apache開源組組織的分分布式計(jì)計(jì)算系統(tǒng)統(tǒng),其分分為第一一代Hadoop和第第二代Hadoop。第一代Hadoop包包含0.20.x、0.21.x、0.22.x三個(gè)版版本,0.20.x最最后演化化成了1.0.x版本本,第
5、二二代Hadoop包含含0.23.x和2.x兩個(gè)個(gè)版本,2.x本版比比0.23.x版本增增加了NameNodeHA和Wire-compatibility兩兩個(gè)特性性,版本本發(fā)展如如圖6.1所示示。圖6.1Hadoop本版版發(fā)展路路線6.1Hadoop概述Hadoop與與MPI在數(shù)據(jù)據(jù)處理上上的差異主要體現(xiàn)現(xiàn)在數(shù)據(jù)據(jù)存儲(chǔ)與與數(shù)據(jù)處處理在系系統(tǒng)中位位置不同同,MPI是計(jì)計(jì)算與存存儲(chǔ)分離離,Hadoop是計(jì)計(jì)算向存存儲(chǔ)遷移移,如圖圖6.2所示。圖6.2Hadoop與MPI在在數(shù)據(jù)處處理上的的差異6.1Hadoop概述在MPI中數(shù)據(jù)據(jù)存儲(chǔ)的的節(jié)點(diǎn)和和數(shù)據(jù)處處理的節(jié)節(jié)點(diǎn)往往往是不同同的,一一般在每每次計(jì)
6、算算開始時(shí)時(shí)MPI需要從從數(shù)據(jù)存存儲(chǔ)節(jié)點(diǎn)點(diǎn)讀取需需要處理理的數(shù)據(jù)據(jù)分配給給各個(gè)計(jì)計(jì)算節(jié)點(diǎn)點(diǎn)對(duì)數(shù)據(jù)據(jù)進(jìn)行處處理,因因此MPI中數(shù)數(shù)據(jù)存儲(chǔ)儲(chǔ)和數(shù)據(jù)據(jù)處理是是分離的的。對(duì)于計(jì)算算密集型型的應(yīng)用用MPI能表現(xiàn)現(xiàn)出良好好的性能能,但對(duì)對(duì)于處理理TB級(jí)級(jí)數(shù)據(jù)的的數(shù)據(jù)密密集型應(yīng)應(yīng)用由于于網(wǎng)絡(luò)數(shù)數(shù)據(jù)傳輸輸速度很很慢,MPI的的性能會(huì)會(huì)大大降降低,甚甚至?xí)降讲豢扇倘淌艿牡氐夭?,所所以?duì)于于構(gòu)建在在MPI上的并并行計(jì)算算系統(tǒng)網(wǎng)網(wǎng)絡(luò)通訊訊速度一一直是一一個(gè)重要要的性能能指標(biāo),用“計(jì)計(jì)算換通通信”也也是MPI并行行程序設(shè)設(shè)計(jì)中的的基本原原則。6.1Hadoop概述在Hadoop中由于于有HDFS文文件系統(tǒng)統(tǒng)的支持持
7、,數(shù)據(jù)據(jù)是分布布式存儲(chǔ)儲(chǔ)在各個(gè)個(gè)節(jié)點(diǎn)的的,計(jì)算算時(shí)各節(jié)節(jié)點(diǎn)讀取取存儲(chǔ)在在自己節(jié)節(jié)點(diǎn)的數(shù)數(shù)據(jù)進(jìn)行行處理,從而避避免了大大量數(shù)據(jù)據(jù)在網(wǎng)絡(luò)絡(luò)上的傳傳遞,實(shí)實(shí)現(xiàn)“計(jì)計(jì)算向存存儲(chǔ)的遷遷移”。6.2HDFSHadoop系系統(tǒng)實(shí)現(xiàn)現(xiàn)對(duì)大數(shù)數(shù)據(jù)的自自動(dòng)并行行處理,是一種種數(shù)據(jù)并并行方法法,這種種方法實(shí)實(shí)現(xiàn)自動(dòng)動(dòng)并行處處理時(shí)需需要對(duì)數(shù)數(shù)據(jù)進(jìn)行行劃分,而對(duì)數(shù)數(shù)據(jù)的劃劃分在Hadoop系系統(tǒng)中從從數(shù)據(jù)的的存儲(chǔ)就就開始了了,因此此文件系系統(tǒng)是Hadoop系系統(tǒng)的重重要組成成部分,也是Hadoop實(shí)實(shí)現(xiàn)自動(dòng)動(dòng)并行框框架的基基礎(chǔ)。Hadoop的的文件系系統(tǒng)稱為為HDFS(HadoopDistributedFileSyst
8、em)。6.2.1HDFS文件系系統(tǒng)的原原型GFSHadoop中中的HDFS原原型來自自Google文文件系系統(tǒng)(Google FileSystem,GFS),為了了滿足Google迅迅速增長長的數(shù)據(jù)據(jù)處理要要求,Google設(shè)設(shè)計(jì)并實(shí)實(shí)現(xiàn)了GFS。Google文文件系統(tǒng)統(tǒng)是一個(gè)個(gè)可擴(kuò)展展的分布布式文件件系統(tǒng),用于對(duì)對(duì)大量數(shù)數(shù)據(jù)進(jìn)行行訪問的的大型、分布式式應(yīng)用。它運(yùn)行于于廉價(jià)的的普通硬硬件上,但可以以提供容容錯(cuò)功能能。它可可以給大大量的用用戶提供供總體性性能較高高的服務(wù)務(wù),也可可以提供供容錯(cuò)功功能。我們認(rèn)為為GFS是一種種面向不不可信服服務(wù)器節(jié)節(jié)點(diǎn)而設(shè)設(shè)計(jì)的文文件系統(tǒng)統(tǒng)。谷歌“三三寶”是“Go
9、ogle文文件系統(tǒng)統(tǒng)”、“BigTable大表表”、“MapReduce算算法”,有了了自己的的文件系系統(tǒng),谷谷歌就可可以有效效地組織織龐大的的數(shù)據(jù)、服務(wù)器器和存儲(chǔ)儲(chǔ),并用用它們工工作。作作為谷歌歌“三寶寶”的其其中之一一,GFS的技技術(shù)優(yōu)勢(shì)勢(shì)不言而而喻。6.2.1HDFS文件系系統(tǒng)的原原型GFSGFS為為分布式式結(jié)構(gòu),它是一一個(gè)高度容錯(cuò)錯(cuò)網(wǎng)絡(luò)文文件系統(tǒng)統(tǒng),主要由由一個(gè)Master(主)和和眾多chunkserver(大大塊設(shè)備備)構(gòu)成成的,體體系結(jié)構(gòu)構(gòu)如圖6.3所所示。圖6.3GFS的體體系結(jié)構(gòu)構(gòu)6.2.1HDFS文件系系統(tǒng)的原原型GFS下面簡單單描述一一下GFS的的工作過過程。(1)客客戶
10、端使使用固定定大小的的塊將應(yīng)應(yīng)用程序序指定的的文件名名和字節(jié)節(jié)偏移轉(zhuǎn)轉(zhuǎn)換成文文件的一一個(gè)塊索索引,向向Master發(fā)送包包含文件件名和塊塊索引的的請(qǐng)求。(2)Master收收到客戶戶端發(fā)來來的請(qǐng)求求,Master向塊塊服務(wù)器器發(fā)出指指示,同同時(shí)時(shí)刻刻監(jiān)控眾眾多chunkserver的狀態(tài)態(tài)。chunkserver緩存Master從從客戶端端收到的的文件名名和塊索索引等信信息。6.2.1HDFS文件系系統(tǒng)的原原型GFS(3)Master通通過和chunkserver的交交互,向向客戶端端發(fā)送chunk-handle和和副本位位置。其其中文件件被分成成若干個(gè)個(gè)塊,而而每個(gè)塊塊都是由由一個(gè)不不變的、
11、全局惟惟一的64位的的chunk-handle標(biāo)識(shí)。Handle是由Master在在塊創(chuàng)建建時(shí)分配配的。而而出于安安全性考考慮,每每一個(gè)文文件塊都都要被復(fù)復(fù)制到多多個(gè)chunkserver上,一一般默認(rèn)認(rèn)3個(gè)副副本。(4)客客戶端向向其中的的一個(gè)副副本發(fā)出出請(qǐng)求,請(qǐng)求指指定了chunkhandle(chunkserver以以chunkhandle標(biāo)識(shí)chunk)和和塊內(nèi)的的一個(gè)字字節(jié)區(qū)間間。(5)客客戶端從從chunkserver獲獲得塊數(shù)數(shù)據(jù),任任務(wù)完成成。6.2.1HDFS文件系系統(tǒng)的原原型GFS通常Client可以以在一個(gè)個(gè)請(qǐng)求中中詢問多多個(gè)chunk的地址址,而Master也也可以很很
12、快回應(yīng)應(yīng)這些請(qǐng)請(qǐng)求。GFS是是可以被被多個(gè)用用戶同時(shí)時(shí)訪問的的,一般般情況下下,Application和chunkserver是可以以在同一一臺(tái)機(jī)子子上的,主要的的數(shù)據(jù)流流量是通通過Application和chunkserver之間,數(shù)據(jù)訪訪問的本本地性極極大地減減少了Application與Master之之間的交交互訪問問,減少少了Master的負(fù)負(fù)荷量,提高了了文件系系統(tǒng)的性性能。6.2.1HDFS文件系系統(tǒng)的原原型GFS客戶端從從來不會(huì)會(huì)從Master讀和和寫文件件數(shù)據(jù)??蛻舳硕酥皇窃?cè)儐朚aster它應(yīng)應(yīng)該和哪哪個(gè)chunkserver聯(lián)系系。Client在一一段限定定的時(shí)間間內(nèi)將這這
13、些信息息緩存,在后續(xù)續(xù)的操作作中客戶戶端直接接和chunkserver交互。由于Master對(duì)對(duì)于讀和和寫的操操作極少少,所以以極大地地減小了了Master的工作作負(fù)荷,真正提提高了Master的的利用性性能。Master保保存著三三類元數(shù)數(shù)據(jù)(metadata):文件名名和塊的的名字空空間、從從文件到到塊的映映射、副副本位置置。所有有的metadata都放在在內(nèi)存中中。操作作日志的的引入可可以更簡簡單、更更可靠地地更新Master的的信息。6.2.1HDFS文件系系統(tǒng)的原原型GFS為GFS的控制制和神經(jīng)經(jīng)系統(tǒng),副本為為Master的備份份,Chunk主要用用來和用用戶交換換數(shù)據(jù)。網(wǎng)絡(luò)中中的主
14、機(jī)機(jī)癱瘓,不會(huì)對(duì)對(duì)整個(gè)系系統(tǒng)造成成大的影影響,替替換上去去的主機(jī)機(jī)會(huì)自動(dòng)動(dòng)重建數(shù)數(shù)據(jù)。即即使Master癱瘓瘓,也會(huì)會(huì)有Shadow作為為替補(bǔ),并且Shadow在在一定時(shí)時(shí)候也會(huì)會(huì)充當(dāng)Master來來提供控控制和數(shù)數(shù)據(jù)交換換。Google每天天有大量量的硬盤盤損壞,但是由由于有GFS,這些硬硬盤的損損壞是允允許的。有人形象象地比喻喻:分布布式的文文件系統(tǒng)統(tǒng)被分塊塊為很多多細(xì)胞單單元,一一旦細(xì)胞胞損壞,神經(jīng)系系統(tǒng)(Master)會(huì)迅速速發(fā)現(xiàn)并并有相應(yīng)應(yīng)的冗余余措施來來使系統(tǒng)統(tǒng)正常運(yùn)運(yùn)行,這這些細(xì)胞胞可以看看作很多多GFS主機(jī)。這一工工作方式式就是人人類大腦腦的工作作方式。6.2.1HDFS文件系
15、系統(tǒng)的原原型GFS當(dāng)然,作為Google的技技術(shù)基石石,GFS可以給大大量的用用戶提供供總體性性能較高高的服務(wù)務(wù),具有以下下優(yōu)勢(shì):(1)Google采采用的存存儲(chǔ)方法法是大量量、分散散的普通通廉價(jià)服服務(wù)器的的存儲(chǔ)方方式,極極大降低低了成本本。(2)對(duì)對(duì)大文件件數(shù)據(jù)快快速存取取,這個(gè)個(gè)毫無疑疑問是可可以達(dá)到到的。(3)容容易擴(kuò)展展,它是是成本很很低的普普通電腦腦,支持持動(dòng)態(tài)插插入節(jié)點(diǎn)點(diǎn);(4)容容錯(cuò)能力力強(qiáng),它它的數(shù)據(jù)據(jù)同時(shí)會(huì)會(huì)在多個(gè)個(gè)chunkserver上上進(jìn)行備備份,具具有相當(dāng)當(dāng)強(qiáng)的容容錯(cuò)性;(5)高高效訪問問,它是是通過Bigtable來來實(shí)現(xiàn)的的,它是是Google FileSyste
16、m上層的的結(jié)構(gòu)。GFS在實(shí)現(xiàn)現(xiàn)分布式式文件系系統(tǒng)的做做法上面面很多都都是簡單單的,但但是確實(shí)實(shí)非常高高效。(6)GFS相相對(duì)于HDFS穩(wěn)定性性是無庸庸置疑的的,并在在Google系統(tǒng)中中得到了了采用且且穩(wěn)定的的運(yùn)行。6.2.2HDFS文件的的基本結(jié)結(jié)構(gòu)HDFS是一種種典型的主從式的的分布式式文件系系統(tǒng),該文件件系統(tǒng)完完全是仿仿照Google的GFS文文件系統(tǒng)統(tǒng)而設(shè)計(jì)計(jì)的,HDFS的架構(gòu)構(gòu)如圖6.4所所示。圖6.4HDFS的架構(gòu)構(gòu)6.2.2HDFS文件的的基本結(jié)結(jié)構(gòu)HDFS由一個(gè)個(gè)名叫Namenode的主主節(jié)點(diǎn)和和多個(gè)名名叫Datanode的子節(jié)節(jié)點(diǎn)組成成。Namenode存儲(chǔ)儲(chǔ)著文件件系統(tǒng)的的
17、元數(shù)據(jù)據(jù),這些些元數(shù)據(jù)據(jù)包括文文件系統(tǒng)統(tǒng)的名字字空間等等,向用用戶映射射文件系系統(tǒng),并并負(fù)責(zé)管管理文件件的存儲(chǔ)儲(chǔ)等服務(wù)務(wù),但實(shí)實(shí)際的數(shù)數(shù)據(jù)并不不存放在在Namenode。Namenode的的作用就就像是文文件系統(tǒng)統(tǒng)的總指指揮,并并向訪問問文件系系統(tǒng)的客客戶機(jī)提提供文件件系統(tǒng)的的映射,這種做做法并不不是Google或Hadoop的的創(chuàng)新,這和傳傳統(tǒng)并行行計(jì)算系系統(tǒng)中的的單一系系統(tǒng)映像像(SingleSystemImage)的做法法相同。HDFS中的Datanode用于于實(shí)際對(duì)對(duì)數(shù)據(jù)的的存放,對(duì)Datanode上數(shù)據(jù)據(jù)的訪問問并不通通過Namemode,而是是與用戶戶直接建建立數(shù)據(jù)據(jù)通信。Hado
18、op啟啟動(dòng)后我我們能看看到Namenode和Datanode這兩個(gè)個(gè)進(jìn)程。6.2.2HDFS文件的的基本結(jié)結(jié)構(gòu)HDFS的工作作過程是這樣的的:用戶請(qǐng)求求創(chuàng)建文文件的指指令由Namenode進(jìn)行行接收,Namenode將將存儲(chǔ)數(shù)數(shù)據(jù)的Datanode的IP返回回給用戶戶,并通通知其他他接收副副本的Datanode,由由用戶直直接與Datanode進(jìn)行行數(shù)據(jù)傳傳送。Namenode同時(shí)時(shí)存儲(chǔ)相相關(guān)的元元數(shù)據(jù)。整個(gè)文件件系統(tǒng)采采用標(biāo)準(zhǔn)準(zhǔn)TCP/IP協(xié)議通通信,實(shí)實(shí)際是架架設(shè)在Linux文件件系統(tǒng)上上的一個(gè)個(gè)上層文文件系統(tǒng)統(tǒng)。HDFS上上的一個(gè)個(gè)典型文文件大小小一般都都在G字字節(jié)至T字節(jié)。6.2.2H
19、DFS文件的的基本結(jié)結(jié)構(gòu)主從式是是云計(jì)算算系統(tǒng)的的一種典典型架構(gòu)構(gòu)方法,系統(tǒng)通通過主節(jié)節(jié)點(diǎn)屏蔽蔽底層的的復(fù)雜結(jié)結(jié)構(gòu),并并向用戶戶提供方方便的文文件目錄錄映射。有些改改進(jìn)的主主從式架架構(gòu)可能能會(huì)采用用分層的的主從式式方法,以減輕輕主節(jié)點(diǎn)點(diǎn)的負(fù)荷荷。6.2.3HDFS的存儲(chǔ)儲(chǔ)過程HDFS在對(duì)一一個(gè)文件件進(jìn)行存存儲(chǔ)時(shí)有有兩個(gè)重重要的策策略:一個(gè)是是副本策略略,一個(gè)是是分塊策略略。副本策略略保證了了文件存存儲(chǔ)的高高可靠性性;分塊策略略保證數(shù)數(shù)據(jù)并發(fā)發(fā)讀寫的的效率并并且是MapReduce實(shí)實(shí)現(xiàn)并行行數(shù)據(jù)處處理的基基礎(chǔ)。6.2.3HDFS的存儲(chǔ)儲(chǔ)過程HDFS的分塊塊策略:通常HDFS在存儲(chǔ)儲(chǔ)一個(gè)文文件會(huì)
20、將將文件切切為64MB大大小的塊塊來進(jìn)行行存儲(chǔ),數(shù)據(jù)塊塊會(huì)被分分別存儲(chǔ)儲(chǔ)在不同同的Datanode節(jié)點(diǎn)上上,這一一過程其其實(shí)就是是一種數(shù)數(shù)據(jù)任務(wù)務(wù)的切分分過程,在后面面對(duì)數(shù)據(jù)據(jù)進(jìn)行MapReduce操操作時(shí)十十分重要要,同時(shí)時(shí)數(shù)據(jù)被被分塊存存儲(chǔ)后在在數(shù)據(jù)讀讀寫時(shí)能能實(shí)現(xiàn)對(duì)對(duì)數(shù)據(jù)的的并發(fā)讀讀寫,提提高數(shù)據(jù)據(jù)讀寫效效率。HDFS采用64MB這樣較較大的文文件分塊策略略有以下3個(gè)優(yōu)點(diǎn):(1)降降低客戶戶端與主主服務(wù)器器的交互互代價(jià);(2)降降低網(wǎng)絡(luò)絡(luò)負(fù)載;(3)減減少主服服務(wù)器中中元數(shù)據(jù)據(jù)的大小小。6.2.3HDFS的存儲(chǔ)儲(chǔ)過程HDFS的副本本策略:HDFS對(duì)數(shù)據(jù)據(jù)塊典型型的副本本策略為為3個(gè)副副本
21、,第一個(gè)副副本存放放在本地地節(jié)點(diǎn),第二個(gè)副副本存放放在同一一個(gè)機(jī)架架的另一一個(gè)節(jié)點(diǎn)點(diǎn),第三個(gè)本本副本存存放在不不同機(jī)架架上的另另一個(gè)節(jié)節(jié)點(diǎn)。這樣的副副本策略略保證了了在HDFS文文件系統(tǒng)統(tǒng)中存儲(chǔ)儲(chǔ)的文件件具有很很高的可可靠性。6.2.3HDFS的存儲(chǔ)儲(chǔ)過程一個(gè)文件件寫入HDFS的基本本過程可以描述述如下:寫入操作作首先由由Namenode為為該文件件創(chuàng)建一一個(gè)新的的記錄,該記錄錄為文件件分配存存儲(chǔ)節(jié)點(diǎn)點(diǎn)包括文文件的分分塊存儲(chǔ)儲(chǔ)信息,在寫入入時(shí)系統(tǒng)統(tǒng)會(huì)對(duì)文文件進(jìn)行行分塊,文件寫寫入的客客戶端獲獲得存儲(chǔ)儲(chǔ)位置的的信息后后直接與與指定的的Datanode進(jìn)進(jìn)行數(shù)據(jù)據(jù)通信,將文件件塊按Namenode
22、分配配的位置置寫入指指定的Datanode,數(shù)數(shù)據(jù)塊在在寫入時(shí)時(shí)不再通通過Namenode,因此此Namenode不不會(huì)成為為數(shù)據(jù)通通信的瓶瓶頸。6.3MapReduce編程框框架在云計(jì)算算和大數(shù)數(shù)據(jù)技術(shù)術(shù)領(lǐng)域被被廣泛提提到并被被成功應(yīng)應(yīng)用的一一項(xiàng)技術(shù)術(shù)就是MapReduce。MapReduce是Google系統(tǒng)統(tǒng)和Hadoop系統(tǒng)統(tǒng)中的一一項(xiàng)核心心技術(shù)。6.3.1MapReduce的的發(fā)展歷歷史MapReduce出出現(xiàn)的歷歷史要追追述到1956年,圖圖靈獎(jiǎng)獲獲得者著著名的人人工智能能專家McCarthy首次次提出了了LISP語言言的構(gòu)想想,而在在LISP語言言中就包包含了現(xiàn)現(xiàn)在我們們所采用用
23、的MapReduce功功能。LISP語言是是一種用用于人工工智能領(lǐng)領(lǐng)域的語語言,在在人工智智能領(lǐng)域域有很多多的應(yīng)用用,LISP在在1956年設(shè)設(shè)計(jì)時(shí)主主要是希希望能有有效地進(jìn)進(jìn)行“符符號(hào)運(yùn)算算”。LISP是一種種表處理理語言,其邏輯輯簡單但但結(jié)構(gòu)不不同于其其他的高高級(jí)語言言。1960年,McCarthy更是是極有預(yù)預(yù)見性地地提出:“今后后計(jì)算機(jī)機(jī)將會(huì)作作為公共共設(shè)施提提供給公公眾”,這一觀觀點(diǎn)已與與現(xiàn)在人人們對(duì)云云計(jì)算的的定義極極為相近近了,所所以我們們把McCarthy稱為“云計(jì)算算之父”。MapReduce在在McCarthy提提出時(shí)并并沒有考考慮到其其在分布布式系統(tǒng)統(tǒng)和大數(shù)數(shù)據(jù)上會(huì)會(huì)有如
24、此此大的應(yīng)應(yīng)用前景景,只是是作為一一種函數(shù)數(shù)操作來來定義的的。6.3.1MapReduce的的發(fā)展歷歷史2004年Google公司司的Dean發(fā)發(fā)表文章章將MapReduce這一一編程模模型在分分布式系系統(tǒng)中的的應(yīng)用進(jìn)進(jìn)行了介介紹,從從此MapRuduce分布布式編程程模型進(jìn)進(jìn)入了人人們的視視野??梢哉J(rèn)為為分布式式MapReduce是由Google公公司首先先提出的的。Hadoop跟跟進(jìn)了Google的的這一思思想,可可以認(rèn)為為Hadoop是一個(gè)個(gè)開源版版本的Google系系統(tǒng),正正是由于于Hadoop的跟進(jìn)進(jìn)才使普普通用戶戶得以開開發(fā)自己己的基于于MapReduce框架的的云計(jì)算算應(yīng)用系系統(tǒng)
25、。6.3.2MapReduce的的基本工工作過程程MapReduce是是一種處處理大數(shù)數(shù)據(jù)集的的編程模模式,它它借鑒了了最早出出現(xiàn)在LISP語言和和其他函函數(shù)語言言中的map和和reduce操作,MapReduce的基本本過程為為:用戶通過過map函數(shù)處處理key/value對(duì),從而產(chǎn)產(chǎn)生一系系列不同同的key/value對(duì),reduce函數(shù)將將key值相同同的key/value對(duì)進(jìn)進(jìn)行合并并?,F(xiàn)實(shí)實(shí)中的很很多處理理任務(wù)都都可以利利用這一一模型進(jìn)進(jìn)行描述述。通過過MapReduce框架能能實(shí)現(xiàn)基基于數(shù)據(jù)據(jù)切分的的自動(dòng)并并行計(jì)算算,大大大簡化了了分布式式編程的的難度,并為在在相對(duì)廉廉價(jià)的商商品化
26、服服務(wù)器集集群系統(tǒng)統(tǒng)上實(shí)現(xiàn)現(xiàn)大規(guī)模模的數(shù)據(jù)據(jù)處理提提供了可可能。6.3.2MapReduce的的基本工工作過程程MapReduce的的過程其其實(shí)非常常簡單,我們用用一個(gè)實(shí)實(shí)際的例例子來說說明MapReduce的編編程模型型。假設(shè)設(shè)我們需需要對(duì)一一個(gè)文件件example.txt中中出現(xiàn)的的單詞次次數(shù)進(jìn)行行統(tǒng)計(jì),這就是是著名的的wordcount例子,在這個(gè)個(gè)例子中中MapReduce的編程程模型可可以這樣樣來描述述:用戶需要要處理的的文件example.txt已被被分為多多個(gè)數(shù)據(jù)據(jù)片存儲(chǔ)儲(chǔ)在集群群系統(tǒng)中中不同的的節(jié)點(diǎn)上上了,用用戶先使使用一個(gè)個(gè)Map函數(shù)Map(example.txt,文文件內(nèi)容
27、容),在在這個(gè)Map函函數(shù)中key值值為example.txt,key通常常是指一一個(gè)具有有唯一值值的標(biāo)識(shí)識(shí),value值就是是example.txt文文件中的的內(nèi)容。Map操操作程序序通常會(huì)會(huì)被分布布到存有有文件example.txt數(shù)據(jù)據(jù)片段的的節(jié)點(diǎn)上上發(fā)起,這個(gè)Map操操作將產(chǎn)產(chǎn)生一組組中間key/value對(duì)對(duì)(word, count),6.3.2MapReduce的的基本工工作過程程這里的word代表出出現(xiàn)在文文件example.txt片段中中的任一一個(gè)單詞詞,每個(gè)個(gè)Map操作所所產(chǎn)生的的key/value對(duì)只代代表example.txt一部分分內(nèi)容的的統(tǒng)計(jì)值值。Reduce函函數(shù)將
28、接接收集群群中不同同節(jié)點(diǎn)Map函函數(shù)生成成的中間間key/value對(duì),并并將Key相同同的key/value對(duì)進(jìn)進(jìn)行合并并,在這這個(gè)例子子中Reduce函數(shù)數(shù)將對(duì)所所有key值相相同的value值進(jìn)進(jìn)行求和和合并,最后輸輸出的key/value對(duì)對(duì)就是(word,count),其中中count就就是這個(gè)個(gè)單詞在在文件example.txt中出出現(xiàn)的總總的次數(shù)數(shù)。6.3.2MapReduce的的基本工工作過程程下面我們們通過一一個(gè)簡單例子子來講解MapReduce的的基本原原理。1任務(wù)務(wù)的描述述來自江蘇蘇、浙江江、山東東三個(gè)省省的9所所高校聯(lián)聯(lián)合舉行行了一場場編程大大賽,每每個(gè)省有有3所高高校
29、參加加,每所所高校各各派5名名隊(duì)員參參賽,各各所高校校的比賽賽平均成成績?nèi)绫肀?.1所示。江蘇省浙江省山東省南京大學(xué)90浙江大學(xué)95山東大學(xué)92東南大學(xué)93浙江工業(yè)大學(xué)84中國海洋大學(xué)85河海大學(xué)84寧波大學(xué)88青島大學(xué)87表6.1原始比賽賽成績6.3.2MapReduce的的基本工工作過程程我們可以以用如表表6.2所示的的形式來來表示成成績,這這樣每所所高校就就具備了了所屬省省份和平平均分?jǐn)?shù)數(shù)這兩個(gè)個(gè)屬性,即。南京大學(xué):江蘇省,90東南大學(xué):江蘇省,93河海大學(xué):江蘇省,84浙江大學(xué):浙江省,95浙江工業(yè)大學(xué):浙江省,84寧波大學(xué):浙江省,88山東大學(xué):山東省,92中國海洋大學(xué):山東省,85
30、青島大學(xué):山東省,87表6.2增加屬性性信息后后的比賽賽成績6.3.2MapReduce的的基本工工作過程程統(tǒng)計(jì)各個(gè)個(gè)省份高高校的平平均分?jǐn)?shù)數(shù)時(shí),高高校的名名稱并不不是很重重要,我我們略去去高校名名稱,如如表6.3所示示。江蘇省,90江蘇省,93江蘇省,84浙江省,95浙江省,84浙江省,88山東省,92山東省,85山東省,87表6.3略去高校校名稱后后的比賽賽成績接下來對(duì)對(duì)各個(gè)省省份的高高校的成成績進(jìn)行行匯總,如表6.4所所示。江蘇省,90、93、84浙江省,95、84、88山東省,92、85、87表6.4各省比賽賽成績匯匯總6.3.2MapReduce的的基本工工作過程程計(jì)算求得得各省高高
31、校的平平均值如如表6.5所示示。表6.5各省平均均成績江蘇省,89浙江省,89山東省,88以上為計(jì)計(jì)算各省省平均成成績的主主要步驟驟,我們們可以用用MapReduce來實(shí)現(xiàn)現(xiàn),其詳詳細(xì)步驟驟如下:2任務(wù)務(wù)的MapReduce實(shí)現(xiàn)現(xiàn)MapReduce包包含Map、Shuffle和Reduce三個(gè)個(gè)步驟,其中Shuffle由Hadoop自動(dòng)動(dòng)完成,Hadoop的使用用者可以以無需了了解并行行程序的的底層實(shí)實(shí)現(xiàn),只只需關(guān)注注Map和Reduce的實(shí)實(shí)現(xiàn)。6.3.2MapReduce的的基本工工作過程程1.MapInput:在Map部分,我們需需要輸入入數(shù)數(shù)據(jù),這這里Key是高高校的名名稱,Value
32、是屬屬性值,即所屬屬省份和和平均分分?jǐn)?shù),如如表6.6所示示。Key:南京大學(xué)Value:江蘇省,90Key:東南大學(xué)Value:江蘇省,93Key:河海大學(xué)Value:江蘇省,84Key:浙江大學(xué)Value:浙江省,95Key:浙江工業(yè)大學(xué)Value:浙江省,84Key:寧波大學(xué)Value:浙江省,88Key:山東大學(xué)Value:山東省,92Key:中國海洋大學(xué)Value:山東省,85Key:青島大學(xué)Value:山東省,87表6.6MapInput數(shù)據(jù)6.3.2MapReduce的的基本工工作過程程2.MapOutput:對(duì)所屬省省份平均均分?jǐn)?shù)進(jìn)進(jìn)行重分分組,去去除高校校名稱,將所屬屬省份變變
33、為Key,平平均分?jǐn)?shù)數(shù)變?yōu)閂alue,如如表6.7所示示。Key:江蘇省Value:90Key:江蘇省Value:93Key:江蘇省Value:84Key:浙江省Value:95Key:浙江省Value:84Key:浙江省Value:88Key:山東省Value:92Key:山東省Value:85Key:山東省Value:87表6.7MapOutput數(shù)據(jù)6.3.2MapReduce的的基本工工作過程程3.Shuffle Output:Shuffle由Hadoop自動(dòng)動(dòng)完成,其任務(wù)務(wù)是實(shí)現(xiàn)現(xiàn)Map,對(duì)Key進(jìn)進(jìn)行分組組,用戶戶可以獲獲得Value的列表表,即List,如如表6.8所示示。Key
34、:江蘇省List:90、93、84Key:浙江省List:95、84、88Key:山東省List:92、85、87表6.8Shuffle Output數(shù)據(jù)4.ReduceInput:表6.8中的內(nèi)內(nèi)容將作作為Reduce任務(wù)務(wù)的輸入入數(shù)據(jù),即從Shuffle任務(wù)中中獲得的的(Key,List)。6.3.2MapReduce的的基本工工作過程程5.ReduceOutput:Reduce任任務(wù)的功功能是完完成用戶戶的計(jì)算算邏輯,這里里的任務(wù)務(wù)是計(jì)算算每個(gè)省省份的高高校學(xué)生生的比賽賽平均成成績,獲獲得的最最終結(jié)果果如表6.9所所示。江蘇省,89 浙江省,89 山東省,88 表6.9ReduceOut
35、put數(shù)據(jù)6.3.3LISP中的MapReduce為了進(jìn)一一步理解解MapReduce,我們們簡單介介紹最早早使用Map和和Reduce的LISP語語言中的的Map和Reduce操作作。下面的LISP語句定定義的這這個(gè)Map操作作是將向向量(1 234 5)和向量量(10 987 6)進(jìn)行相相乘的操操作,輸輸出也為為向量(1018242830)。(map vector#*#(123 45)#(10 987 6)-#(1018242830)這個(gè)Map操作作對(duì)應(yīng)于于向量到到向量的的映射,兩個(gè)向向量按乘乘積關(guān)系系進(jìn)行映映射。6.3.3LISP中的MapReduce下面的LISP語句定定義的這這個(gè)Re
36、duce操作作是將向向量(1 234 567 8910)中中的元素素進(jìn)行求求和的Reduce操操作,輸輸出結(jié)果果為55。(reduce #+#(12 345 678 910)-55這個(gè)Reduce操作作對(duì)應(yīng)于于向量的的約簡,它將向向量按求求和的關(guān)關(guān)系約簡簡為一個(gè)個(gè)值??梢钥闯龀?,在LISP語言中中Map和Reduce只是是作為一一種操作作定義,并沒有有體現(xiàn)出出任何的的分布式式計(jì)算的的特征。6.3.4MapReduce的的特點(diǎn)MapReduce主主要具有有以下幾幾個(gè)特點(diǎn):(1)需需要在集集群條件件下使用用。MapReduce的的主要作作用是實(shí)實(shí)現(xiàn)對(duì)大大數(shù)據(jù)的的分布式式處理,其設(shè)計(jì)計(jì)時(shí)的基基本要求
37、求就是在在大規(guī)模模集群條條件下的的(雖然然一些系系統(tǒng)可以以在單機(jī)機(jī)下運(yùn)行行,但這這種條件件下只具具有仿真真運(yùn)行的的意義),Google作為為分布式式MapReduce提出者者,它本本身就是是世界上上最大的的集群系系統(tǒng),所所以MapReduce天然然需要在在集群系系統(tǒng)下運(yùn)運(yùn)行才能能有效。6.3.4MapReduce的的特點(diǎn)(2)需需要有相相應(yīng)的分分布式文文件系統(tǒng)統(tǒng)的支持持。這里要注注意的是是單獨(dú)的的MapReduce模式并并不具有有自動(dòng)的的并行性性能,就就像它在在LISP語言言中的表表現(xiàn)一樣樣,它只只有與相相應(yīng)的分分布式文文件系統(tǒng)統(tǒng)相結(jié)合合才能完完美地體體現(xiàn)MapReduce這種種編程框框架的優(yōu)
38、優(yōu)勢(shì)。如Google系統(tǒng)對(duì)對(duì)應(yīng)的分分布式文文件系統(tǒng)統(tǒng)為GFS,Hadoop系系統(tǒng)對(duì)應(yīng)應(yīng)的分布布式文件件系統(tǒng)為為HDFS。MapReduce能能實(shí)現(xiàn)計(jì)計(jì)算的自自動(dòng)并行行化很大大程度上上是由于于分布式式文件系系統(tǒng)在對(duì)對(duì)文件存存儲(chǔ)時(shí)就就實(shí)現(xiàn)了了對(duì)大數(shù)數(shù)據(jù)文件件的切分分,這種種并行方方法也叫叫數(shù)據(jù)并并行方法法。數(shù)據(jù)據(jù)并行方方法避免免了對(duì)計(jì)計(jì)算任務(wù)務(wù)本身的的人工切切分,降降低了編編程的難難度,而而像MPI往往往需要人人工對(duì)計(jì)計(jì)算任務(wù)務(wù)進(jìn)行切切分,因因此分布布式編程程難度較較大。6.3.4MapReduce的的特點(diǎn)(3)可可以在商商品化集集群條件件下運(yùn)行行,不需需要特別別的硬件件支持.和高性能能計(jì)算不不同
39、,基基于MapReduce的系系統(tǒng)往往往不需要要特別的的硬件支支持,按按Google的報(bào)道道,他們們的實(shí)驗(yàn)驗(yàn)系統(tǒng)中中的節(jié)點(diǎn)點(diǎn)就是基基于典型型的雙核核X86的系統(tǒng)統(tǒng),配置置24GB的的內(nèi)存,網(wǎng)絡(luò)為為百兆網(wǎng)網(wǎng)和千兆兆網(wǎng)構(gòu)成成,存儲(chǔ)儲(chǔ)設(shè)備的的便宜的的IDE硬盤。6.3.4MapReduce的的特點(diǎn)(4)假假設(shè)節(jié)點(diǎn)點(diǎn)的失效效為正常常情況。傳統(tǒng)的服服務(wù)器通通常被認(rèn)認(rèn)為是穩(wěn)穩(wěn)定的,但在服服務(wù)器數(shù)數(shù)量巨大大或采用用廉價(jià)服服務(wù)的條條件下,服務(wù)器器的實(shí)效效將變得得常見,所以通通?;谟贛apReduce的分布布式計(jì)算算系統(tǒng)采采用了存存儲(chǔ)備份份、計(jì)算算備份和和計(jì)算遷遷移等策策略來應(yīng)應(yīng)對(duì),從從而實(shí)現(xiàn)現(xiàn)在單節(jié)節(jié)點(diǎn)不穩(wěn)
40、穩(wěn)定的情情況下保保持系統(tǒng)統(tǒng)整個(gè)的的穩(wěn)定性性。6.3.4MapReduce的的特點(diǎn)(5)適適合對(duì)大大數(shù)據(jù)進(jìn)進(jìn)行處理理。由于基于于MapReduce的系統(tǒng)統(tǒng)并行化化是通過過數(shù)據(jù)切切分實(shí)現(xiàn)現(xiàn)的數(shù)據(jù)據(jù)并行,同時(shí)計(jì)計(jì)算程序序啟動(dòng)時(shí)時(shí)需要向向各節(jié)點(diǎn)點(diǎn)拷貝計(jì)計(jì)算程序序,過小小的文件件在這種種模式下下工作反反而會(huì)效效率低下下。Google的實(shí)實(shí)驗(yàn)也表表明一個(gè)個(gè)由150秒時(shí)時(shí)間完成成的計(jì)算算任務(wù),程序啟啟動(dòng)階段段的時(shí)間間就花了了60秒秒,可以以想象,如果計(jì)計(jì)算任務(wù)務(wù)數(shù)據(jù)過過小,這這樣的花花費(fèi)是不不值得的的,同時(shí)時(shí)對(duì)過小小的數(shù)據(jù)據(jù)進(jìn)行切切分也無無必要。所以MapReduce更更適合進(jìn)進(jìn)行大數(shù)數(shù)據(jù)的處處理。6.3.
41、4MapReduce的的特點(diǎn)(6)計(jì)計(jì)算向存存儲(chǔ)遷移移。傳統(tǒng)的高高性能計(jì)計(jì)算數(shù)據(jù)據(jù)集中存存儲(chǔ),計(jì)計(jì)算時(shí)數(shù)數(shù)據(jù)向計(jì)計(jì)算節(jié)點(diǎn)點(diǎn)拷貝,而基于于MapReduce的分布布式系統(tǒng)統(tǒng)在數(shù)據(jù)據(jù)存儲(chǔ)時(shí)時(shí)就實(shí)現(xiàn)現(xiàn)了分布布式存儲(chǔ)儲(chǔ),一個(gè)個(gè)較大的的文件會(huì)會(huì)被切分分成大量量較小的的文件存存儲(chǔ)于不不同的節(jié)節(jié)點(diǎn),系系統(tǒng)調(diào)度度機(jī)制在在啟動(dòng)計(jì)計(jì)算時(shí)會(huì)會(huì)將計(jì)算算程序盡盡可能分分發(fā)給需需要處理理的數(shù)據(jù)據(jù)所在的的節(jié)點(diǎn)。計(jì)算程程序的大大小通常常會(huì)比數(shù)數(shù)據(jù)文件件小的多多,所以以遷移計(jì)計(jì)算的網(wǎng)網(wǎng)絡(luò)代價(jià)價(jià)要比遷遷移數(shù)據(jù)據(jù)小的多多。6.3.4MapReduce的的特點(diǎn)(7)MapReduce的的計(jì)算效效率會(huì)受受最慢的的Map任務(wù)影影響。由于
42、Reduce操作作的完成成需要等等待所有有Map任務(wù)的的完成,所以如如果Map任務(wù)務(wù)中有一一個(gè)任務(wù)務(wù)出現(xiàn)了了延遲,則整個(gè)個(gè)MapReduce操作將將受最慢慢的Map任務(wù)務(wù)的影響響。6.4實(shí)實(shí)現(xiàn)Map/Reduce的C語語言實(shí)例例Map/Reduce操作代代表了一一大類的的數(shù)據(jù)處處理操作作方式,為了讓讓大家對(duì)對(duì)Map/Reduce的工工作過程程有一個(gè)個(gè)直觀的的了解,下面的的程序采采用C語語言實(shí)現(xiàn)現(xiàn)了一個(gè)個(gè)簡單經(jīng)經(jīng)典的Map/Reduce計(jì)算,計(jì)算從控控制臺(tái)輸輸入的字字符串中中單詞的的計(jì)數(shù),這一計(jì)計(jì)算過程程都是在在同一個(gè)個(gè)節(jié)點(diǎn)上上完成的的,并未未實(shí)現(xiàn)計(jì)計(jì)算的并并行化,歷史上上的Lisp語語言也是是
43、運(yùn)行在在單機(jī)的的上的程程序,這個(gè)例子子的主要要目的是是讓大家家理解這這一操作作的過程程。程序序中的my_map()和my_reduce()函數(shù)數(shù)分別實(shí)實(shí)現(xiàn)了對(duì)對(duì)字符串串的Map和Reduce操操作。6.4實(shí)實(shí)現(xiàn)Map/Reduce的C語語言實(shí)例例程序6.1輸入:this is mapreducehellomap hello reduce6.4實(shí)實(shí)現(xiàn)Map/Reduce的C語語言實(shí)例例輸出:This is mapresults:This is reduceresults:此運(yùn)行實(shí)實(shí)例中我我們從控控制臺(tái)輸輸入字符符串“this is mapreducehellomap hello reduce”,
44、程序通通過Map和Reduce過過程對(duì)字字符串的的的單詞詞出現(xiàn)的的頻率進(jìn)進(jìn)行統(tǒng)計(jì)計(jì),并輸輸出了結(jié)結(jié)果,這這是一個(gè)個(gè)典型的的Map/Reduce過程程。6.5建建立Hadoop開開發(fā)環(huán)境境本節(jié)使用用三個(gè)Linux虛擬擬機(jī)來構(gòu)構(gòu)建Hadoop集群群環(huán)境,其中一一個(gè)虛擬擬機(jī)作為為NameNode(Master節(jié)點(diǎn)),另外外兩個(gè)虛虛擬機(jī)作作為DataNode(Slave節(jié)點(diǎn)),如圖圖6.5所示。在3個(gè)個(gè)節(jié)點(diǎn)下下3個(gè)虛虛擬機(jī)的的機(jī)器名名和IP地址信信息如下下。虛擬機(jī)1:主機(jī)機(jī)名為vm1,IP為為01,作為為NameNode使使用;虛擬機(jī)2:主機(jī)機(jī)名為vm2,IP為為192.16
45、8.122.102,作為為DataNode使使用;虛擬機(jī)3:主機(jī)機(jī)名為vm3,IP為為03,作為為DataNode使使用。圖6.5Hadoop集集群配置置6.5.1相相關(guān)準(zhǔn)備備工作6.5.1相相關(guān)準(zhǔn)備備工作6.5.1相相關(guān)準(zhǔn)備備工作(4)新新建用戶戶“hadoop”。在每個(gè)節(jié)節(jié)點(diǎn)上使使用useradd指指令新建建一個(gè)用用戶hadoop,并并設(shè)置密密碼。useradd hadooppasswdhadoop(5)永永久關(guān)閉閉每個(gè)節(jié)節(jié)點(diǎn)的防防火墻(root權(quán)限限)。在每個(gè)節(jié)節(jié)點(diǎn)上執(zhí)執(zhí)行以下下指令,這樣將將永久性性的關(guān)閉閉每個(gè)階階段的防防火墻chkconfigiptables
46、off/永永久性生生效,重重啟后不不會(huì)復(fù)原原6.5.1相相關(guān)準(zhǔn)備備工作(6)配配置ssh實(shí)現(xiàn)現(xiàn)Hadoop結(jié)點(diǎn)間間用戶的的無密碼碼訪問Hadoop需需要在各各個(gè)結(jié)點(diǎn)點(diǎn)間進(jìn)行行信息傳傳遞,因因此需要要實(shí)現(xiàn)結(jié)結(jié)點(diǎn)間的的無密碼碼訪問,這與采采用MPI進(jìn)行行并行程程序設(shè)計(jì)計(jì)相同,否則系系統(tǒng)會(huì)不不停地向向你請(qǐng)求求密碼驗(yàn)驗(yàn)證。這里的配配置在各各個(gè)節(jié)點(diǎn)點(diǎn)的hadoop用戶戶下進(jìn)行行。配置過程程與MPI部分分的配置置過程相相關(guān),這這里不再再詳述,配置完完成后使使用ssh指令令可以在在三個(gè)虛虛擬機(jī)之之間實(shí)現(xiàn)現(xiàn)無密碼碼訪問。6.5.2JDK的安裝裝配置Hadoop是是采用Java編寫的的,每個(gè)個(gè)虛擬機(jī)機(jī)上均需需要
47、安裝裝Java的JDK,JDK的安裝裝配置需需在root用用戶下進(jìn)進(jìn)行,具具體步驟驟如下。(1)在在Sun官方網(wǎng)網(wǎng)站下載載JDK軟件包包jdk-7u45-linux-x64.tar.gz。(2)新新建目錄錄/usr/java,將下下載的JDK軟軟件包進(jìn)進(jìn)行進(jìn)行行解壓。mkdir/usr/javatarzxvfjdk-7u45-linux-x64.tar.gz6.5.2JDK的安裝裝配置(3)配配置Java環(huán)環(huán)境變量量。#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環(huán)境變變量之后后,在命命令行中中鍵入如如下命令令,使環(huán)環(huán)境變量量生效:source/etc/profile/使環(huán)境境變量設(shè)設(shè)置生效效通過which命令測測試JDK的安安裝是否否成功:whichjava系統(tǒng)顯示示如下信信息:/usr/java/jdk1.6.0_12/bin/java此時(shí)JDK配置置成功,接下來來可進(jìn)行行Hadoo
49、p的安裝裝配置。6.5.2JDK的安裝裝配置程序6.2publicclasstestpublicstatic voidmain(Stringargs )System.out.println(Thisisahadooptestprogram!JDKsuccessed!);6.5.2JDK的安裝裝配置編譯測試試程序:javactest.java運(yùn)行測試試程序:java test如果輸出出為:This is ahadoop testprogram!JDKsuccessed!表明JDK已成成功安裝裝,并能能成功編編譯執(zhí)行行Java程序序。6.5.3下下載、解解壓Hadoop,配配置Hadoop環(huán)境境變
50、量Hadoop集集群中每每個(gè)節(jié)點(diǎn)點(diǎn)的安裝裝、配置置是相同同的,我我們可以以現(xiàn)在一一個(gè)虛擬擬機(jī)上進(jìn)進(jìn)行安裝裝、配置置,然后后將其復(fù)復(fù)制到其其他節(jié)點(diǎn)點(diǎn)的相應(yīng)應(yīng)目錄。將hadoop-0.21.0.tar.gz放放置在vm1的的/home/hadoop目錄中中,用hadoop用用戶對(duì)其其進(jìn)行解解壓縮:cd/home/hadooptarzxvfhadoop-0.21.0.tar.gz6.5.3下下載、解解壓Hadoop,配配置Hadoop環(huán)境境變量把Hadoop的安裝裝路徑添添加到“/etc/profile”中,在文件件的末尾尾添下面面的代碼碼,每個(gè)個(gè)節(jié)點(diǎn)均均需要進(jìn)進(jìn)行此步步配置。#hadoop env
51、ironmentexportHADOOP_HOME=/usr/java/jdk1.7.0_45exportPATH=$PATH:$HADOOP_HOME/bin保存了Hadoop環(huán)環(huán)境變量量之后,在命令令行中鍵鍵入如下下命令,使環(huán)境境變量生生效:source/etc/profile/使環(huán)環(huán)境變量量設(shè)置生生效6.5.4修修改Hadoop配置置文件Hadoop的的配置文文件存于于conf文件件夾中,我們需需要對(duì)該該文件夾夾中以下下文件進(jìn)進(jìn)行修改改:hadoop-env.sh、core-site.xml、mapred-site.xml、masters、slaves。(1)修修改hadoop-env.
52、sh文文件。Hadoop的的Java環(huán)境境變量在在hadoop-env.sh中進(jìn)進(jìn)行設(shè)置置。使用用vim打開hadoop-env.sh文件,找到Java環(huán)境變變量的設(shè)設(shè)置位置置,將其其改為JDK的的安裝地地址,保保存并退退出。exportJAVA_HOME=/usr/java/jdk1.7.0_456.5.4修修改Hadoop配置置文件(2)修改core-site.xml文件。core-site.xml用于設(shè)置置Hadoop集群的HDFS的地址和和端口號(hào)號(hào),以及及用于保保存HDFS信息的tmp文件夾,對(duì)HDFS進(jìn)行重新新格式化化的時(shí)候候先行刪刪除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)節(jié)節(jié)點(diǎn)的IP,這里“01”。6.5.4修修改Hadoop配置置文件(3)修改改mapred-site.xml文件。在mapred-site.xml文件的的在之間間添加以以
54、下代碼碼,配置置JobTracker的主主機(jī)名和和端口。mapreduce.jobtracker.address01:9001NameNode6.5.4修修改Hadoop配置置文件(4)修修改masters文文件。使用vim打開開masters文件件,寫入入NameNode(Master)節(jié)點(diǎn)點(diǎn)的主機(jī)機(jī)名,這這里為vm1,保存并并退出。vm1(5)修修改slaves文件件。使用vim打開開slaves文件,寫入DataNode(Slaver)節(jié)點(diǎn)的的主機(jī)名名,這里里為vm1、vm2,保存并并退出。Vm2vm36.5.5將將配置好好的Hadoop文件件復(fù)制到
55、到其他節(jié)節(jié)點(diǎn)到了這里里,我們們已經(jīng)安安裝、配配置了一一個(gè)Hadoop節(jié)點(diǎn)點(diǎn),Hadoop集群群中每個(gè)個(gè)節(jié)點(diǎn)的的安裝、配置是是相同的的,這里里需要將將vm1上的Hadoop文文件夾整整體復(fù)制制到其他他的節(jié)點(diǎn)點(diǎn),執(zhí)行行以下指指令:scp-r/home/hadoop/hadoop-0.21.0hadoopvm2:/home/hadoop/scp-r/home/hadoop/hadoop-0.21.0hadoopvm3:/home/hadoop/格式化NameNode在正式啟啟動(dòng)Hadoop之前前,需要要執(zhí)行以以下指令令,對(duì)Hadoop的的分布式式文件進(jìn)進(jìn)行初始始化:cd/home/hadoop/hadoop-0.21
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 球團(tuán)焙燒工崗前客戶服務(wù)考核試卷含答案
- 再生物資挑選工安全管理測試考核試卷含答案
- 麥芽制麥工安全文化模擬考核試卷含答案
- 碳化鈦制備工崗前安全行為考核試卷含答案
- 船舶貨運(yùn)員創(chuàng)新實(shí)踐競賽考核試卷含答案
- 知識(shí)傳遞關(guān)愛延續(xù)
- 2026年吉安市白鷺洲中學(xué)面向高校招聘教師15人備考題庫(含答案詳解)
- 企業(yè)環(huán)境與職業(yè)健康管理制度
- 2026四川成都市雙流區(qū)東升葛陌幼兒園教師招聘1人備考題庫及答案詳解1套
- 2025北京國藥控股系統(tǒng)紀(jì)檢(巡察)人員招聘備考題庫及一套完整答案詳解
- 北師大版七年級(jí)上冊(cè)數(shù)學(xué) 期末復(fù)習(xí)講義
- 2023年初級(jí)經(jīng)濟(jì)師《初級(jí)人力資源專業(yè)知識(shí)與實(shí)務(wù)》歷年真題匯編(共270題)
- 赤峰南臺(tái)子金礦有限公司金礦2022年度礦山地質(zhì)環(huán)境治理計(jì)劃書
- 氣穴現(xiàn)象和液壓沖擊
- 公民健康素養(yǎng)知識(shí)講座課件
- 銷軸連接(-自編)
- GB/T 15623.2-2003液壓傳動(dòng)電調(diào)制液壓控制閥第2部分:三通方向流量控制閥試驗(yàn)方法
- 英語音標(biāo)拼讀練習(xí)
- 新外研版八年級(jí)上冊(cè)總復(fù)習(xí)知識(shí)點(diǎn)歸納
- 江蘇省泰州市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會(huì)明細(xì)及行政區(qū)劃代碼
- 文言文入門課課件
評(píng)論
0/150
提交評(píng)論