《Hadoop大數(shù)據(jù)原理與應(yīng)用實(shí)驗(yàn)教程》實(shí)驗(yàn)指導(dǎo)書-實(shí)驗(yàn)1部署全分布模式Hadoop集群_第1頁(yè)
《Hadoop大數(shù)據(jù)原理與應(yīng)用實(shí)驗(yàn)教程》實(shí)驗(yàn)指導(dǎo)書-實(shí)驗(yàn)1部署全分布模式Hadoop集群_第2頁(yè)
《Hadoop大數(shù)據(jù)原理與應(yīng)用實(shí)驗(yàn)教程》實(shí)驗(yàn)指導(dǎo)書-實(shí)驗(yàn)1部署全分布模式Hadoop集群_第3頁(yè)
《Hadoop大數(shù)據(jù)原理與應(yīng)用實(shí)驗(yàn)教程》實(shí)驗(yàn)指導(dǎo)書-實(shí)驗(yàn)1部署全分布模式Hadoop集群_第4頁(yè)
《Hadoop大數(shù)據(jù)原理與應(yīng)用實(shí)驗(yàn)教程》實(shí)驗(yàn)指導(dǎo)書-實(shí)驗(yàn)1部署全分布模式Hadoop集群_第5頁(yè)
已閱讀5頁(yè),還剩68頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

《Hadoop大數(shù)據(jù)原理與應(yīng)用實(shí)驗(yàn)教程》配套實(shí)驗(yàn)指導(dǎo)書實(shí)驗(yàn)1部署全分布模式Hadoop集群編寫者:安徽信息工程學(xué)院-李月軍實(shí)驗(yàn)1部署全分布模式Hadoop集群本實(shí)驗(yàn)的知識(shí)地圖如圖1-1所示(表示重點(diǎn)表示難點(diǎn))。圖1-1實(shí)驗(yàn)1部署全分布模式Hadoop集群知識(shí)地圖一、實(shí)驗(yàn)?zāi)康?.熟練掌握Linux基本命令。2.掌握靜態(tài)IP地址的配置、主機(jī)名和域名映射的修改。3.掌握Linux環(huán)境下Java的安裝、環(huán)境變量的配置、Java基本命令的使用。4.理解為何需要配置SSH免密登錄,掌握Linux環(huán)境下SSH的安裝、免密登錄的配置。5.熟練掌握在Linux環(huán)境下如何部署全分布模式Hadoop集群。二、實(shí)驗(yàn)環(huán)境本實(shí)驗(yàn)所需的軟硬件環(huán)境包括PC、VMwareWorkstationPro、CentOS安裝包、OracleJDK安裝包、Hadoop安裝包。三、實(shí)驗(yàn)內(nèi)容1.規(guī)劃部署。2.準(zhǔn)備機(jī)器。3.準(zhǔn)備軟件環(huán)境:配置靜態(tài)IP;修改主機(jī)名;編輯域名映射;安裝和配置Java;安裝和配置SSH免密登錄。4.獲取和安裝Hadoop。5.配置全分布模式Hadoop集群。6.關(guān)閉防火墻。7.格式化文件系統(tǒng)。8.啟動(dòng)和驗(yàn)證Hadoop。9.關(guān)閉Hadoop。四、實(shí)驗(yàn)原理(一)Linux基本命令Linux是一套免費(fèi)使用和自由傳播的類Unix操作系統(tǒng),是一個(gè)基于POSIX和UNIX的多用戶、多任務(wù)、支持多線程和多CPU的操作系統(tǒng)。它能運(yùn)行主要的UNIX工具軟件、應(yīng)用程序和網(wǎng)絡(luò)協(xié)議,它支持32位和64位硬件。Linux繼承了Unix以網(wǎng)絡(luò)為核心的設(shè)計(jì)思想,是一個(gè)性能穩(wěn)定的多用戶網(wǎng)絡(luò)操作系統(tǒng)。Linux操作系統(tǒng)誕生于1991年10月5日。Linux存在著許多不同的版本,但它們都使用了Linux內(nèi)核。Linux可安裝在各種計(jì)算機(jī)硬件設(shè)備中,比如手機(jī)、平板電腦、路由器、視頻游戲控制臺(tái)、臺(tái)式計(jì)算機(jī)、大型機(jī)和超級(jí)計(jì)算機(jī)。嚴(yán)格來(lái)講,Linux這個(gè)詞本身只表示Linux內(nèi)核,但實(shí)際上人們已經(jīng)習(xí)慣用Linux來(lái)形容整個(gè)基于Linux內(nèi)核且使用GNU工程各種工具和數(shù)據(jù)庫(kù)的操作系統(tǒng)。此處將介紹實(shí)驗(yàn)中涉及到的一些Linux操作系統(tǒng)的基本命令。1)查看當(dāng)前目錄pwd命令用于顯示當(dāng)前目錄,效果如下所示。[xuluhui@localhost~]$pwd/home/xuluhui2)切換目錄cd命令用來(lái)切換目錄,效果如下所示。[xuluhui@localhost~]$cd/usr/local[xuluhui@localhostlocal]$pwd/usr/local3)羅列文件ls命令用于查看文件與目錄,效果如下所示。[xuluhui@localhost~]$lsDesktopDocumentsDownloadsMusicPicturesPublicTemplatesVideos4)創(chuàng)建目錄mkdir命令用于創(chuàng)建目錄,效果如下所示。[xuluhui@localhost~]$mkdirTestData[xuluhui@localhost~]$lsDesktopDownloadsPicturesTemplatesVideosDocumentsMusicPublicTestData5)拷貝文件或目錄cp命令用于拷貝文件,若拷貝的對(duì)象為目錄,則需要使用-r參數(shù),效果如下所示。[xuluhui@localhost~]$cp-rTestDataTestData2[xuluhui@localhost~]$lsDesktopDownloadsPicturesTemplatesTestData2DocumentsMusicPublicTestDataVideos6)移動(dòng)或重命名文件或目錄mv命令用于移動(dòng)文件,在實(shí)際使用中,也常用于重命名文件或目錄,效果如下所示。[xuluhui@localhost~]$mvTestData2TestDataxlh[xuluhui@localhost~]$lsDesktopDownloadsPicturesTemplatesTestDataxlhDocumentsMusicPublicTestDataVideos7)刪除文件或目錄rm命令用于刪除文件,若刪除的對(duì)象為目錄,則需要使用-r參數(shù),效果如下所示。[xuluhui@localhost~]$rm-rfTestDataxlh[xuluhui@localhost~]$lsDesktopDownloadsPicturesTemplatesVideosDocumentsMusicPublicTestData8)查看進(jìn)程ps命令用于顯示當(dāng)前運(yùn)行中進(jìn)程的相關(guān)信息,效果如下所示。[xuluhui@localhost~]$psPIDTTYTIMECMD69780pts/000:00:00bash71680pts/000:00:00ps9)壓縮與解壓文件tar命令用于文件壓縮與解壓,參數(shù)中的c表示壓縮,x表示解壓縮,效果如下所示。[root@localhostlocal]#tar-zxvf/home/xuluhui/Downloads/hadoop-2.9.2.tar.gz10)查看文件內(nèi)容cat命令用于查看文件內(nèi)容,效果如下所示。[xuluhui@localhost~]#cat/usr/local/hadoop-2.9.2/etc/hadoop/core-site.xml11)查看機(jī)器IP配置ipaddress命令用于查看機(jī)器IP配置,效果如下所示。[xuluhui@localhost~]$ipaddress1:lo:<LOOPBACK,UP,LOWER_UP>mtu65536qdiscnoqueuestateUNKNOWNgroupdefaultqlen1000link/loopback00:00:00:00:00:00brd00:00:00:00:00:00inet/8scopehostlovalid_lftforeverpreferred_lftforeverinet6::1/128scopehostvalid_lftforeverpreferred_lftforever2:ens33:<BROADCAST,MULTICAST,UP,LOWER_UP>mtu1500qdiscpfifo_faststateUPgroupdefaultqlen1000link/ether00:0c:29:6d:5d:c9brdff:ff:ff:ff:ff:ffinet28/24brd55scopeglobalnoprefixroutedynamicens33valid_lft1795secpreferred_lft1795secinet6fe80::6bb8:6e80:d029:10f2/64scopelinknoprefixroutevalid_lftforeverpreferred_lftforever3:virbr0:<NO-CARRIER,BROADCAST,MULTICAST,UP>mtu1500qdiscnoqueuestateDOWNgroupdefaultqlen1000link/ether52:54:00:0b:74:1bbrdff:ff:ff:ff:ff:ffinet/24brd55scopeglobalvirbr0valid_lftforeverpreferred_lftforever4:virbr0-nic:<BROADCAST,MULTICAST>mtu1500qdiscpfifo_fastmastervirbr0stateDOWNgroupdefaultqlen1000link/ether52:54:00:0b:74:1bbrdff:ff:ff:ff:ff:ffifconfig命令也可用于查看機(jī)器IP配置,效果如下所示。[xuluhui@localhost~]$ifconfigens33:flags=4163<UP,BROADCAST,RUNNING,MULTICAST>mtu1500inet28netmaskbroadcast55inet6fe80::6bb8:6e80:d029:10f2prefixlen64scopeid0x20<link>ether00:0c:29:6d:5d:c9txqueuelen1000(Ethernet)RXpackets11319bytes732632(715.4KiB)RXerrors0dropped0overruns0frame0TXpackets492bytes51674(50.4KiB)TXerrors0dropped0overruns0carrier0collisions0lo:flags=73<UP,LOOPBACK,RUNNING>mtu65536inetnetmaskinet6::1prefixlen128scopeid0x10<host>looptxqueuelen1000(LocalLoopback)RXpackets2228bytes193268(188.7KiB)RXerrors0dropped0overruns0frame0TXpackets2228bytes193268(188.7KiB)TXerrors0dropped0overruns0carrier0collisions0virbr0:flags=4099<UP,BROADCAST,MULTICAST>mtu1500inetnetmaskbroadcast55ether52:54:00:0b:74:1btxqueuelen1000(Ethernet)RXpackets0bytes0(0.0B)RXerrors0dropped0overruns0frame0TXpackets0bytes0(0.0B)TXerrors0dropped0overruns0carrier0collisions0(二)vim編輯器vim是一個(gè)類似于vi的著名的功能強(qiáng)大、高度可定制的文本編輯器,在vi的基礎(chǔ)上改進(jìn)和增加了很多特性,vim是vi的加強(qiáng)版,比vi更容易使用,vi的命令幾乎全部都可以在vim上使用。vi/vim共分為三種工作模式:命令模式(Commandmode)、輸入模式(Insertmode)和末行模式(Lastlinemode)。用戶剛剛啟動(dòng)vi/vim,便進(jìn)入了命令模式,此狀態(tài)下敲擊鍵盤動(dòng)作會(huì)被vim識(shí)別為命令,而非輸入字符,命令模式下是常用的幾個(gè)命令包括:“i”切換到輸入模式,以輸入字符;“x”刪除當(dāng)前光標(biāo)所在處的字符;“:”切換到末行模式,以在最底端一行輸入命令。在命令模式下按下“i”就進(jìn)入了輸入模式,在輸入模式中,可以使用若干按鍵完成相應(yīng)任務(wù),例如字符按鍵以及Shift組合,輸入字符;Insert按鍵切換光標(biāo)為輸入/替換模式,光標(biāo)將變成豎線/下劃線;ESC按鍵退出輸入模式,切換到命令模式等。在命令模式下按下“:”(英文冒號(hào))就進(jìn)入末行模式,末行模式下可以輸入單個(gè)或多個(gè)字符的命令,可用的命令非常多,例“q”可以退出程序,“w”用于保存文件等,按ESC鍵可隨時(shí)退出末行模式。vi/vim三種工作模式的轉(zhuǎn)換如圖1-2所示。命令模式命令模式輸入模式末行模式輸入i,a,oESC鍵:ESC鍵vi/vim文件名進(jìn)入:wq保存退出圖1-2vi/vim三種工作模式vim是實(shí)驗(yàn)中用到最多的文件編輯命令。在命令行輸入“vim文件名”后,默認(rèn)進(jìn)入“命令模式”,不可編輯文檔,需按“i”鍵,方可編輯文檔,編輯結(jié)束后,需按“ESC”鍵,先退回命令模式,再按“:”進(jìn)入末行模式,接著輸入“wq”方可保存退出。(三)Java基本命令在安裝和配置Java后,可以使用Java命令來(lái)編譯、運(yùn)行或者打包Java程序。1)查看Java版本[root@localhost~]#java-versionjavaversion"1.8.0_191"Java(TM)SERuntimeEnvironment(build1.8.0_191-b12)JavaHotSpot(TM)64-BitServerVM(build25.191-b12,mixedmode)2)查看當(dāng)前所有Java進(jìn)程jps(JavaVirtualMachineProcessStatusTool)是Java提供的一個(gè)顯示當(dāng)前所有Java進(jìn)程pid的命令,適合在linux/unix平臺(tái)上簡(jiǎn)單察看當(dāng)前Java進(jìn)程的一些簡(jiǎn)單情況,如下所示。[root@localhost~]$jps11973Jps3)編譯Java程序[root@localhost~]#javacHelloWorld.java4)運(yùn)行Java程序[root@localhost~]#javaHelloWorldWelcometoJava.5)打包Java程序[root@localhost~]#jar-cvfHelloWorld.jarHelloWorld.classaddedmanifestadding:HelloWorld.class(in=430)(out=295)(deflated31%)由于打包時(shí)并沒(méi)有指定manifest文件,因此該jar包無(wú)法直接運(yùn)行,如下所示。[root@localhost~]#java-jarHelloWorld.jarnomainmanifestattribute,inHelloWorld.jar6)打包攜帶manifest文件的Java程序manifest.mf文件用于描述整個(gè)Java項(xiàng)目,最常用的功能是指定項(xiàng)目的入口類,新建文件“manifest.mf”,文件內(nèi)容輸入“Main-Class:HelloWorld”。[root@localhost~]#vimmanifest.mf打包時(shí),加入-m參數(shù),并指定manifest文件名。[root@localhost~]#jar-cvfmHelloWorld.jarmanifest.mfHelloWorld.classaddedmanifestadding:HelloWorld.class(in=430)(out=295)(deflated31%)7)運(yùn)行jar包可使用“java”命令直接運(yùn)行jar包。[root@localhost~]#java-jarHelloWorld.jarWelcometoJava.(四)SSH安全通信協(xié)議對(duì)于遠(yuǎn)程管理其它機(jī)器,一般使用遠(yuǎn)程桌面或者telnet。Linux安裝時(shí)自帶了telnet,但是telnet的缺點(diǎn)是通信不加密,存在不安全因素,只適合內(nèi)網(wǎng)訪問(wèn)。為解決這個(gè)問(wèn)題,推出了安全通信協(xié)議即SSH(SecureShell),通過(guò)SSH可以安全地進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)傳輸,這得益于SSH采用的是非對(duì)稱加密體系,傳輸內(nèi)容使用RSA或者DSA加密,可以避免網(wǎng)絡(luò)竊聽(tīng)。非對(duì)稱加密的工作流程包括以下幾個(gè)步驟:服務(wù)端接受到遠(yuǎn)程客戶端登陸請(qǐng)求,將自己的公鑰發(fā)送給客戶端;客戶端利用這個(gè)公鑰對(duì)數(shù)據(jù)進(jìn)行加密;客戶端將加密的信息發(fā)送給服務(wù)端;服務(wù)端利用自己的私鑰進(jìn)行解密,驗(yàn)證其合法性;驗(yàn)證結(jié)果返回客戶端響應(yīng)。不過(guò)需要注意的是,Hadoop并不是通過(guò)SSH協(xié)議進(jìn)行數(shù)據(jù)傳輸?shù)?,而是Hadoop控制腳本需要依賴SSH來(lái)執(zhí)行針對(duì)整個(gè)集群的操作。Hadoop在啟動(dòng)和停止HDFS、YARN的時(shí)候,需要主節(jié)點(diǎn)上的進(jìn)程通過(guò)SSH協(xié)議啟動(dòng)或停止從節(jié)點(diǎn)上的各種守護(hù)進(jìn)程。也就是說(shuō)如果不配置SSH免密登錄對(duì)Hadoop的使用沒(méi)有任何影響,只需在啟動(dòng)和停止Hadoop時(shí)輸入每個(gè)從節(jié)點(diǎn)的用戶名和密碼即可。試想,若管理成百上千個(gè)節(jié)點(diǎn)組成的Hadoop集群,連接每個(gè)從節(jié)點(diǎn)時(shí)都輸入密碼將是一項(xiàng)繁雜的工作。因此,配置Hadoop主節(jié)點(diǎn)到各個(gè)從節(jié)點(diǎn)的SSH免密登錄是有需要的。(五)HadoopHadoop是Apache開源組織提供的一個(gè)分布式存儲(chǔ)和計(jì)算的軟件框架,它具有高可用、彈性可擴(kuò)展的特點(diǎn),非常適合處理海量數(shù)據(jù)。Hadoop由ApacheLucence創(chuàng)始人道格·卡丁創(chuàng)建,Lucence是一個(gè)應(yīng)用廣泛的文本搜索系統(tǒng)庫(kù)。Hadoop起源于開源的網(wǎng)絡(luò)搜索引擎ApacheNutch,它本身是Lucence項(xiàng)目的一部分。第一代Hadoop(即Hadoop1.0)的核心由分布式文件系統(tǒng)HDFS和分布式計(jì)算框架MapReduce組成,為了克服Hadoop1.0中HDFS和MapReduce的架構(gòu)設(shè)計(jì)和應(yīng)用性能方面的各種問(wèn)題,提出了第二代Hadoop(即Hadoop2.0),Hadoop2.0的核心包括分布式文件系統(tǒng)HDFS、統(tǒng)一資源管理和調(diào)度框架YARN和分布式計(jì)算框架MapReduce。HDFS是谷歌文件系統(tǒng)GFS的開源實(shí)現(xiàn),是面向普通硬件環(huán)境的分布式文件系統(tǒng),適用于大數(shù)據(jù)場(chǎng)景的數(shù)據(jù)存儲(chǔ),提供了高可靠、高擴(kuò)展、高吞吐率的數(shù)據(jù)存儲(chǔ)服務(wù)。MapReduce是谷歌MapReduce的開源實(shí)現(xiàn),是一種簡(jiǎn)化的分布式應(yīng)用程序開發(fā)的編程模型,允許開發(fā)人員在不了解分布式系統(tǒng)底層細(xì)節(jié)和缺少并行應(yīng)用開發(fā)經(jīng)驗(yàn)的情況下,能快速輕松地編寫出分布式并行程序,將其運(yùn)行于計(jì)算機(jī)集群上,完成對(duì)大規(guī)模數(shù)據(jù)集的存儲(chǔ)和計(jì)算。YARN是將MapReduce1.0中JobTracker的資源管理功能單獨(dú)剝離出來(lái)而形成,它是一個(gè)純粹的資源管理和調(diào)度框架,并解決了Hadoop1.0中只能運(yùn)行MapReduce框架的限制,可在YARN上運(yùn)行各種不同類型計(jì)算框架包括MapReduce、Spark、Storm等。1.Hadoop版本Hadoop的發(fā)行版本有兩類,一類是由社區(qū)維護(hù)的免費(fèi)開源的ApacheHadoop,另一類是一些商業(yè)公司如Cloudera、Hortonworks、MapR等推出的Hadoop商業(yè)版。ApacheHadoop版本分為三代,分別稱為Hadoop1.0、Hadoop2.0、Hadoop3.0。第一代Hadoop包含0.20.x、0.21.x和0.22.x三大版本,其中,0.20.x最后演化成1.0.x,變成了穩(wěn)定版,而0.21.x和0.22.x則增加了HDFSNameNodeHA等重要新特性。第二代Hadoop包含0.23.x和2.x兩大版本,它們完全不同于Hadoop1.0,是一套全新的架構(gòu),均包含HDFSFederation和YARN兩個(gè)系統(tǒng),相比于0.23.x,2.x增加了NameNodeHA和Wire-compatibility兩個(gè)重大特性,需要注意的是,Hadoop2.0主要由Yahoo獨(dú)立出來(lái)的Hortonworks公司主持開發(fā)。與Hadoop2.0相比,Hadoop3.0具有許多重要的增強(qiáng)功能,包括HDFS可擦除編碼,YARN時(shí)間軸服務(wù)v.2,支持2個(gè)以上的NameNode,支持MicrosoftAzureDataLake和AliyunObjectStorageSystem文件系統(tǒng)連接器,并服務(wù)于深度學(xué)習(xí)用例和長(zhǎng)期運(yùn)行的應(yīng)用等重要功能,新增的組件HadoopSubmarine使數(shù)據(jù)工程師能夠在同一個(gè)HadoopYARN集群上輕松開發(fā)、訓(xùn)練和部署深度學(xué)習(xí)模型。Hadoop商業(yè)版主要是提供對(duì)各項(xiàng)服務(wù)的支持,高級(jí)功能要收取一定費(fèi)用,這對(duì)一些研發(fā)能力不太強(qiáng)的企業(yè)來(lái)說(shuō)是非常有利的,公司只要出一定的費(fèi)用就能使用到一些高級(jí)功能,每個(gè)發(fā)行版都有自己的特點(diǎn),目前使用最多的是ClouderaDistributionHadoop(CDH)和HortonworksDataPlatform(HDP)。請(qǐng)讀者注意,若無(wú)特別強(qiáng)調(diào),本書是圍繞ApacheHadoop2.0展開描述和實(shí)驗(yàn)的。2.Hadoop運(yùn)行環(huán)境對(duì)于大部分Java開源產(chǎn)品而言,在部署與運(yùn)行之前,總是需要搭建一個(gè)合適的環(huán)境,通常包括操作系統(tǒng)和Java環(huán)境兩方面。同樣,Hadoop部署與運(yùn)行所需要的系統(tǒng)環(huán)境,同樣包括操作系統(tǒng)和Java環(huán)境,另外還需要SSH。1)操作系統(tǒng)Hadoop運(yùn)行平臺(tái)支持以下兩種:(1)Windows:Hadoop支持Windows,但由于Windows操作系統(tǒng)本身不太適合作為服務(wù)器操作系統(tǒng),所以編者不介紹Windows下安裝和配置Hadoop,讀者可自行參考網(wǎng)址/hadoop/Hadoop2OnWindows。(2)GNU/Linux:Hadoop的最佳運(yùn)行環(huán)境無(wú)疑是開源操作系統(tǒng)Linux,Linux的發(fā)行版本眾多,常見(jiàn)的有CentOS、Ubuntu、RedHat、Debian、Fedora、SUSE、openSUSE等。本書采用的操作系統(tǒng)為L(zhǎng)inux發(fā)行版CentOS7。2)Java環(huán)境Hadoop使用Java語(yǔ)言編寫,因此它的運(yùn)行環(huán)境需要Java環(huán)境的支持。Hadoop3.x需要Java8,Hadoop2.7及以后版本需要Java7或Java8,Hadoop2.6及早期版本需要Java6。本書采用的Java為OracleJDK1.8。3)SSHHadoop集群若想運(yùn)行,其運(yùn)行平臺(tái)Linux必須安裝SSH,且sshd服務(wù)必須運(yùn)行,只有這樣,才能使用Hadoop腳本管理遠(yuǎn)程Hadoop守護(hù)進(jìn)程。本書選用的CentOS7自帶有SSH。3.Hadoop運(yùn)行模式Hadoop運(yùn)行模式有以下三種:(1)單機(jī)模式(Local/StandaloneMode):只在一臺(tái)計(jì)算機(jī)上運(yùn)行,不需任何配置,在這種模式下,Hadoop所有的守護(hù)進(jìn)程都變成了一個(gè)Java進(jìn)程,存儲(chǔ)采用本地文件系統(tǒng),沒(méi)有采用分布式文件系統(tǒng)HDFS。(2)偽分布模式(Pseudo-DistributedMode):只在一臺(tái)計(jì)算機(jī)上運(yùn)行,在這種模式下,Hadoop所有守護(hù)進(jìn)程都運(yùn)行在一個(gè)節(jié)點(diǎn)上,在一個(gè)節(jié)點(diǎn)上模擬了一個(gè)具有Hadoop完整功能的微型集群,存儲(chǔ)采用分布式文件系統(tǒng)HDFS,但是HDFS的名稱節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn)都位于同一臺(tái)計(jì)算機(jī)上。(3)全分布模式(Fully-DistributedMode):在多臺(tái)計(jì)算機(jī)上運(yùn)行,在這種模式下,Hadoop的守護(hù)進(jìn)程運(yùn)行在多個(gè)節(jié)點(diǎn)上,形成一個(gè)真正意義上的集群,存儲(chǔ)采用分布式文件系統(tǒng)HDFS,且HDFS的名稱節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn)位于不同計(jì)算機(jī)上。三種運(yùn)行模式各有優(yōu)缺點(diǎn)。單機(jī)模式配置最簡(jiǎn)單,但它與用戶交互的方式不同于全分布模式;對(duì)于節(jié)點(diǎn)數(shù)目受限的初學(xué)者可以采用偽分布模式,雖然只有一個(gè)節(jié)點(diǎn)支撐整個(gè)Hadoop集群,但是Hadoop在偽分布模式下的操作方式與在全分布模式下的操作幾乎完全相同;全分布模式是使用Hadoop的最佳方式,真實(shí)Hadoop集群的運(yùn)行均采用該模式,但它需要最多的配置工作和架構(gòu)所需要的機(jī)器集群。4.Hadoop2.0生態(tài)系統(tǒng)經(jīng)過(guò)十幾年的發(fā)展,目前,Hadoop已經(jīng)成長(zhǎng)為一個(gè)龐大的體系。狹義上來(lái)說(shuō),Hadoop是一個(gè)適合大數(shù)據(jù)的分布式存儲(chǔ)和分布式計(jì)算的平臺(tái),Hadoop2.0主要由三部分構(gòu)成:分布式文件系統(tǒng)HDFS、統(tǒng)一資源管理和調(diào)度框架YARN、分布式計(jì)算框架MapReduce;但廣義上來(lái)講,Hadoop是指以Hadoop為基礎(chǔ)的生態(tài)系統(tǒng),是一個(gè)龐大體系,Hadoop僅是其中最基礎(chǔ)、最重要的部分,生態(tài)系統(tǒng)中每個(gè)子系統(tǒng)只負(fù)責(zé)解決某一特定問(wèn)題。Hadoop2.0生態(tài)系統(tǒng)如圖1-3所示。HiveHiveMapReduceSparkImpalaZooKeeperKafkaFlumeYARNHDFSCommonPigMahoutSqoopHBaseAmbariSparkSQL圖1-3Hadoop2.0生態(tài)系統(tǒng)5.Hadoop體系架構(gòu)Hadoop集群采用主從架構(gòu)(Master/Slave),NameNode與ResourceManager為Master,DataNode與NodeManager為Slaves,守護(hù)進(jìn)程N(yùn)ameNode和DataNode負(fù)責(zé)完成HDFS的工作,守護(hù)進(jìn)程ResourceManager和NodeManager則負(fù)責(zé)完成YARN的工作。Hadoop2.0集群架構(gòu)圖如圖1-4所示。NameNodeNameNodeResourceManagerDataNodeNodeManagerDataNodeNodeManagerDataNodeNodeManager…圖1-4Hadoop2.0集群架構(gòu)6.Hadoop配置文件Hadoop配置文件很多,配置文件位于$HADOOP_HOME/etc/hadoop,關(guān)鍵的幾個(gè)配置文件如表1-1所示,偽分布模式和全分布模式下的Hadoop集群所需修改的配置文件有差異。表1-1Hadoop主要配置文件文件名稱格式描述hadoop-env.shBash腳本記錄運(yùn)行Hadoop要用的環(huán)境變量yarn-env.shBash腳本記錄運(yùn)行YARN要用的環(huán)境變量(覆蓋hadoop-env.sh中設(shè)置的變量)mapred-env.shBash腳本記錄運(yùn)行MapReduce要用的環(huán)境變量覆蓋hadoop-env.sh中設(shè)置的變量)core-site.xmlHadoop配置XMLHadoopCore的配置項(xiàng),包括HDFS、MapReduce和YARN常用的I/O設(shè)置等hdfs-site.xmlHadoop配置XMLHDFS守護(hù)進(jìn)程的配置項(xiàng),包括NameNode、SecondaryNameNode、DataNode等yarn-site.xmlHadoop配置XMLYARN守護(hù)進(jìn)程的配置項(xiàng),包括ResourceManager、NodeManager等mapred-site.xmlHadoop配置XMLMapReduce守護(hù)進(jìn)程的配置項(xiàng),包括JobHistoryServerslaves純文本運(yùn)行DataNode和NodeManager的從節(jié)點(diǎn)機(jī)器列表,每行1個(gè)主機(jī)名pertiesJava屬性控制如何在Hadoop上發(fā)布度量的屬性pertiesJava屬性系統(tǒng)日志文件、NameNode審計(jì)日志、任務(wù)JVM進(jìn)程的任務(wù)日志的屬性hadoop-policy.xmlHadoop配置XML安全模式下運(yùn)行Hadoop時(shí)的訪問(wèn)控制列表的配置項(xiàng)五、實(shí)驗(yàn)步驟(一)規(guī)劃部署1.Hadoop集群架構(gòu)規(guī)劃全分布模式下部署Hadoop集群時(shí),最低需要兩臺(tái)機(jī)器,一個(gè)主節(jié)點(diǎn)和一個(gè)從節(jié)點(diǎn)。本實(shí)驗(yàn)擬將Hadoop集群運(yùn)行在Linux上,將使用3臺(tái)安裝有Linux操作系統(tǒng)的機(jī)器,主機(jī)名分別為master、slave1、slave2,其中master作為主節(jié)點(diǎn),slave1和slave2作為從節(jié)點(diǎn)。具體Hadoop集群部署規(guī)劃表如表1-2所示。表1-2全分布模式Hadoop集群部署規(guī)劃表主機(jī)名IP地址運(yùn)行服務(wù)軟硬件配置master(主節(jié)點(diǎn))30NameNodeSecondaryNameNodeResourceManagerJobHistoryServer內(nèi)存:4GCPU:1個(gè)2核硬盤:40G操作系統(tǒng):CentOS7.6.1810Java:OracleJDK8u191Hadoop:Hadoop2.9.2slave1(從節(jié)點(diǎn)1)31DataNodeNodeManager內(nèi)存:1GCPU:1個(gè)1核硬盤:20G操作系統(tǒng):CentOS7.6.1810Java:OracleJDK8u191Hadoop:Hadoop2.9.2slave2(從節(jié)點(diǎn)2)32DataNodeNodeManager內(nèi)存:1GCPU:1個(gè)1核硬盤:20G操作系統(tǒng):CentOS7.6.1810Java:OracleJDK8u191Hadoop:Hadoop2.9.2Hadoop集群架構(gòu)規(guī)劃圖如圖1-5所示。mastermaster30slave131slave232NameNodeSecondaryNameNodeResourceManagerJobHistoryServerDataNodeNodeManagerDataNodeNodeManager圖1-5全分布模式Hadoop集群架構(gòu)規(guī)劃圖2.軟件選擇1)虛擬機(jī)工具鑒于多數(shù)用戶使用的是Windows操作系統(tǒng),作為Hadoop初學(xué)者,建議在Windows操作系統(tǒng)上安裝虛擬機(jī)工具,并在其上創(chuàng)建Linux虛擬機(jī)。編者采用的虛擬機(jī)工具為VMwareWorkstationPro,讀者也可采用其他虛擬機(jī)工具例如OracleVirtualBox等。2)Linux操作系統(tǒng)編者采用的Linux操作系統(tǒng)為免費(fèi)的CentOS(CommunityEnterpriseOperatingSystem,社區(qū)企業(yè)操作系統(tǒng)),CentOS是RedHatEnterpriseLinux依照開放源代碼規(guī)定釋出的源代碼所編譯而成,讀者也可以使用其他Linux操作系統(tǒng)例如Ubuntu、RedHat、Debian、Fedora、SUSE、openSUSE等。3)JavaHadoop使用Java語(yǔ)言編寫,因此它的運(yùn)行環(huán)境需要Java環(huán)境的支持。由于Hadoop2.7及以后版本需要Java7或Java8,而本實(shí)驗(yàn)采用Hadoop2.9.2版本,因此采用的Java為OracleJDK1.8。4)SSH由于Hadoop控制腳本需要依賴SSH來(lái)管理遠(yuǎn)程Hadoop守護(hù)進(jìn)程,因此Hadoop集群的運(yùn)行平臺(tái)Linux必須安裝SSH,且sshd服務(wù)必須運(yùn)行。本實(shí)驗(yàn)選用的CentOS7自帶有SSH。5)HadoopHadoop起源于2002年的Apach項(xiàng)目Nutch,2004年道格·卡丁開發(fā)了現(xiàn)在HDFS和MapReduce的最初版本,2006年ApacheHadoop項(xiàng)目正式啟動(dòng),以支持MapReduce和HDFS的獨(dú)立發(fā)展。Hadoop的版本經(jīng)歷了1.0、2.0、3.0,目前最新穩(wěn)定版本是2019年1月16日發(fā)布的Hadoop3.2.0,編者采用的是2018年11月19日發(fā)布的穩(wěn)定版Hadoop2.9.2。本實(shí)驗(yàn)中所使用各種軟件的名稱、版本、發(fā)布日期及下載地址如表1-3所示。表1-3本實(shí)驗(yàn)部署Hadoop集群所使用的軟件名稱、版本、發(fā)布日期及下載地址軟件名稱軟件版本發(fā)布日期下載地址VMwareWorkstationProVMwareWorkstation12.5.7ProforWindows2017年6月22日/products/workstation-pro.htmlCentOSCentOS7.6.18102018年11月26日/download/JavaOracleJDK8u1912018年10月16日/technetwork/java/javase/downloads/index.htmlHadoopHadoop2.9.22018年11月19日/releases.html(二)準(zhǔn)備機(jī)器編者使用VMwareWorkstationPro共安裝了3臺(tái)CentOS虛擬機(jī),如圖1-6所示,分別為hadoop2.9.2-master、hadoop2.9.2-slave1和hadoop2.9.2-slave2,其中hadoop2.9.2-master的內(nèi)存為4096MB,CPU為1個(gè)2核,hadoop2.9.2-slave1和hadoop2.9.2-slave2的內(nèi)存均為1024MB,CPU為1個(gè)1核。關(guān)于如何使用VMwareWorkstation安裝CentOS虛擬機(jī),可參見(jiàn)編者編寫的資源“使用VMwareWorkstation安裝CentOS虛擬機(jī)過(guò)程詳解”。圖1-6準(zhǔn)備好的3臺(tái)CentOS虛擬機(jī)編者采用的虛擬機(jī)工具VMwareWorkstation12.5.7ProforWindows的具體下載地址為/web/vmware/details?productId=524&rPId=20840&downloadGroup=WKST-1257-WIN,Linux操作系統(tǒng)CentOS7.6.1810的光盤鏡像文件名為CentOS-7-x86_64-DVD-1810.iso。(三)準(zhǔn)備軟件環(huán)境3臺(tái)CentOS虛擬機(jī)的軟件環(huán)境準(zhǔn)備過(guò)程相同,以下步驟以即將作為Hadoop集群主節(jié)點(diǎn)的虛擬機(jī)hadoop2.9.2-master為例講述,作為從節(jié)點(diǎn)的虛擬機(jī)hadoop2.9.2-slave1和hadoop2.9.2-slave2的軟件環(huán)境準(zhǔn)備不再贅述。1.配置靜態(tài)IP機(jī)器不同,CentOS版本不同,網(wǎng)卡配置文件都不盡相同。編者使用的CentOS7.6.1810對(duì)應(yīng)的網(wǎng)卡配置文件為/etc/sysconfig/network-scripts/ifcfg-ens33,讀者可自行查看個(gè)人CentOS的網(wǎng)卡配置文件。(1)查看網(wǎng)卡配置文件名,具體過(guò)程如圖1-7所示。圖1-7查看網(wǎng)卡配置文件名(2)切換到root用戶,使用命令“vim/etc/sysconfig/network-scripts/ifcfg-ens33”修改網(wǎng)卡配置文件,為該機(jī)器設(shè)置靜態(tài)IP地址。網(wǎng)卡ifcfg-ens33配置文件的原始內(nèi)容如圖1-8所示。圖1-8網(wǎng)卡ifcfg-ens33配置文件原始內(nèi)容網(wǎng)卡ifcfg-ens33配置文件修改后內(nèi)容如圖1-9所示。圖1-9網(wǎng)卡ifcfg-ens33配置文件修改后內(nèi)容使用“reboot”命令重啟機(jī)器或者“systemctlrestartnetwork.service”命令重啟網(wǎng)絡(luò)方可使得配置生效,如圖1-10所示,使用命令“ipaddress”或者簡(jiǎn)寫“ipaddr”查看到當(dāng)前機(jī)器的IP地址已設(shè)置為靜態(tài)IP“30”。圖1-10使用命令“ipaddr”查看機(jī)器IP地址同理,將虛擬機(jī)hadoop2.9.2-slave1和hadoop2.9.2-slave2的IP地址依次設(shè)置為靜態(tài)IP“31”、“32”。2.修改主機(jī)名切換到root用戶,通過(guò)修改配置文件/etc/hostname,可以修改Linux主機(jī)名,該配置文件中原始內(nèi)容為:localhost.localdomain按照部署規(guī)劃,主節(jié)點(diǎn)的主機(jī)名為“master”,將配置文件/etc/hostname中原始內(nèi)容替換為:master使用“reboot”命令重啟機(jī)器方可使得配置生效,如圖1-11所示,使用命令“hostname”查看到當(dāng)前主機(jī)名已修改為“master”。圖1-11使用命令“hostname”查看當(dāng)前主機(jī)名同理,將虛擬機(jī)hadoop2.9.2-slave1和hadoop2.9.2-slave2的主機(jī)名依次設(shè)置為“slave1”、“slave2”。3.編輯域名映射為協(xié)助用戶便捷訪問(wèn)該機(jī)器而無(wú)需記住IP地址串,需要編輯域名映射文件/etc/hosts,在原始內(nèi)容最后追加3行,如圖1-12所示。圖1-12域名映射文件/etc/hosts修改后內(nèi)容使用“reboot”命令重啟機(jī)器方可使得配置生效。同理,編輯虛擬機(jī)hadoop2.9.2-slave1和hadoop2.9.2-slave2的域名映射文件,內(nèi)容同虛擬機(jī)hadoop2.9.2-master。至此,3臺(tái)CentOS虛擬機(jī)的靜態(tài)IP、主機(jī)名、域名映射均已修改完畢,用ping命令來(lái)檢測(cè)各節(jié)點(diǎn)間是否通訊正常,可按“ctrl+C”組合鍵終止數(shù)據(jù)包的發(fā)送,成功效果如圖1-13所示。圖1-13ping命令檢測(cè)各節(jié)點(diǎn)間通訊是否正常4.安裝和配置Java(1)卸載OracleOpenJDK。首先,通過(guò)命令“java-version”查看是否已安裝Java,如圖1-14所示,由于CentOS7自帶的Java是OracleOpenJDK,而更建議使用OracleJDK,因此將OracleOpenJDK卸載。圖1-14CentOS7自帶的OpenJDK其次,使用“rpm-qa|grepjdk”命令查詢jdk軟件,如圖1-15所示。圖1-15使用rpm命令查詢jdk軟件最后,切換到root用戶下,分別使用命令“yum-yremovejava-1.8.0*”和“yum-yremovejava-1.7.0*”卸載openjdk1.8和openjdk1.7,例如使用yum卸載openjdk1.8.0的具體過(guò)程如圖1-16所示。圖1-16使用yum卸載openjdk1.8.0同理,卸載節(jié)點(diǎn)slave1和slave2上的OracleOpenJDK。(2)下載OracleJDK。需要根據(jù)機(jī)器所安裝的操作系統(tǒng)和位數(shù)選擇相應(yīng)JDK安裝包下載,可以使用命令“getconfLONG_BIT”來(lái)查詢Linux操作系統(tǒng)是32還是64位;也可以使用命令“file/bin/ls”來(lái)顯示Linux版本號(hào),使用命令“file/bin/ls”的結(jié)果如圖1-17所示。圖1-17查詢Linux操作系統(tǒng)位數(shù)從圖1-17可知,該機(jī)器安裝的是CentOS64位。OracleJDK的下載地址為/technetwork/java/javase/downloads/index.html,本實(shí)驗(yàn)下載的JDK安裝包文件名為2018年10月16日發(fā)布的jdk-8u191-linux-x64.tar.gz,并存放在目錄/home/xuluhui/Downloads下。同理,在節(jié)點(diǎn)slave1和slave2上也下載相同版本的OracleJDK,并存放在目錄/home/xuluhui/Downloads下。(3)安裝OracleJDK。使用tar命令解壓進(jìn)行安裝,例如安裝到目錄/usr/java下,首先在/usr下創(chuàng)建目錄java,然后解壓,具體過(guò)程如圖1-18所示。圖1-18使用tar命令解壓安裝Java同理,在節(jié)點(diǎn)slave1和slave2上也安裝OracleJDK。(4)配置Java環(huán)境。通過(guò)修改/etc/profile文件完成環(huán)境變量JAVA_HOME、PATH和CLASSPATH的設(shè)置,在配置文件/etc/profile的最后添加如下內(nèi)容,效果如圖1-19所示。#setjavaenvironmentexportJAVA_HOME=/usr/java/jdk1.8.0_191exportPATH=$JAVA_HOME/bin:$PATHexportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar圖1-19配置Java環(huán)境變量使用命令“source/etc/profile”重新加載配置文件或者重啟機(jī)器,使配置生效,Java環(huán)境變量配置成功后的系統(tǒng)變量“PATH”值如圖1-20所示。圖1-20重新加載配置文件/etc/profile同理,在節(jié)點(diǎn)slave1和slave2上也配置Java環(huán)境。(5)驗(yàn)證Java。再次使用命令“java-version”,查看Java是否安裝配置成功及其版本,如圖1-21所示。圖1-21查看Java是否安裝配置成功及其版本5.安裝和配置SSH免密登錄(1)安裝SSH。使用命令“rpm-qa|grepssh”查詢SSH是否已經(jīng)安裝,如圖1-22所示。圖1-22查詢SSH是否安裝從圖1-22可以看出,SSH軟件包已安裝好,若沒(méi)有安裝好,用yum安裝,命令如下所示。yum-yinstallopensshyum-yinstallopenssh-serveryum-yinstallopenssh-clients(2)修改sshd配置文件。使用命令“vim/etc/ssh/sshd_config”修改sshd配置文件,原始第43行內(nèi)容如圖1-23所示。圖1-23sshd配置文件/etc/ssh/sshd_config原始內(nèi)容(部分)修改后的內(nèi)容如圖1-24所示。圖1-24sshd配置文件/etc/ssh/sshd_config修改后內(nèi)容同理,在節(jié)點(diǎn)slave1和slave2上也修改sshd配置文件。(3)重啟sshd服務(wù)。使用如下命令重啟sshd服務(wù),同理,在節(jié)點(diǎn)slave1和slave2上也需要重啟sshd服務(wù)。systemctlrestartsshd.service(4)生成公鑰和私鑰。切換到普通用戶xuluhui下,利用“cd~”命令切換回到用戶xuluhui的家目錄下,首先使用命令“ssh-keygen”在家目錄中生成公鑰和私鑰,如圖1-25所示。圖1-25使用命令“ssh-keygen”生成公鑰和私鑰其中,id_rsa是私鑰,id_rsa.pub是公鑰。其次使用命令“cat~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys”把公鑰id_rsa.pub的內(nèi)容追加到authorized_keys授權(quán)密鑰文件中,如圖1-26所示。圖1-26公鑰內(nèi)容追加到authorized_keys授權(quán)密鑰文件最后使用命令“chmod0600~/.ssh/authorized_keys”修改密鑰文件的相應(yīng)權(quán)限。(5)共享公鑰。經(jīng)過(guò)共享公鑰后,就不再需要輸入密碼。因?yàn)橹挥?主2從節(jié)點(diǎn),所以直接復(fù)制公鑰比較方便,將master的公鑰直接復(fù)制給slave1、slave2就可以解決連接從節(jié)點(diǎn)時(shí)需要密碼的問(wèn)題,過(guò)程如圖1-27所示。圖1-27將master公鑰復(fù)制給slave1并測(cè)試ssh免密登錄slave1從圖1-27可以看出,已能從master機(jī)器ssh免密登錄到slave1機(jī)器上,若當(dāng)前用戶是root,則不能直接ssh免密登錄到slave1上,如圖1-28所示。圖1-28當(dāng)前用戶是root時(shí)并不能ssh免密登錄slave1同理,將master的公鑰首先通過(guò)命令“ssh-copy-id-i~/.ssh/id_rsa.pubxuluhui@slave2”復(fù)制給slave2,然后測(cè)試是否可以ssh免密登錄slave2,測(cè)試結(jié)果如圖1-29所示。圖1-29測(cè)試ssh免密登錄slave2為了使主節(jié)點(diǎn)master能ssh免密登錄自身,使用“sshmaster”命令嘗試登錄自身,第1次連接時(shí)需要人工干預(yù)輸入“yes”,然后會(huì)自動(dòng)將master的key加入/home/xuluhui/.ssh/know_hosts文件中,此時(shí)即可登錄到自身。第2次“sshmaster”時(shí)就可以免密登錄到自身。具體過(guò)程及測(cè)試結(jié)果如圖1-30所示。圖1-30ssh免密登錄自身及測(cè)試結(jié)果至此,可以從master節(jié)點(diǎn)ssh免密登錄到自身、slave1和slave2了,這對(duì)Hadoop已經(jīng)足夠,但是若想達(dá)到所有節(jié)點(diǎn)之間都能免密登錄的話,還需要在slave1、slave2上各執(zhí)行3次,也就是說(shuō)兩兩共享密鑰,這樣累計(jì)共執(zhí)行9次。(四)獲取和安裝Hadoop以下步驟需要在master、slave1和slave2三個(gè)節(jié)點(diǎn)上均要完成。1.獲取HadoopHadoop官方下載地址為/releases.html,本實(shí)驗(yàn)選用的Hadoop版本是2018年11月19日發(fā)布的穩(wěn)定版Hadoop2.9.2,其安裝包文件hadoop-2.9.2.tar.gz例如存放在/home/xuluhui/Downloads中。2.安裝Hadoop(1)切換到root用戶,將hadoop-2.9.2.tar.gz解壓到目錄/usr/local下,具體命令如下所示。surootcd/usr/localtar-zxvf/home/xuluhui/Downloads/hadoop-2.9.2.tar.gz(2)將Hadoop安裝目錄的權(quán)限賦給xuluhui用戶,輸入以下命令。chown-Rxuluhui/usr/local/hadoop-2.9.2(五)配置全分布模式Hadoop集群Hadoop的配置文件位于$HADOOP_HOME/etc/hadoop目錄下,所有配置文件如圖1-31所示。圖1-31查看Hadoop配置文件Hadoop的配置項(xiàng)種類繁多,讀者可以根據(jù)需要設(shè)置Hadoop的最小配置,其余配置選項(xiàng)都采用默認(rèn)配置文件中指定的值。Hadoop默認(rèn)的配置文件在“$HADOOP_HOME/share/doc/hadoop”路徑下,找到默認(rèn)配置文件所在的文件夾,這些文檔可以起到查詢手冊(cè)的作用。這個(gè)文件夾存放了所有關(guān)于Hadoop的共享文檔,因此被細(xì)分了很多子文件夾,下面列出即將修改的配置文件的默認(rèn)值配置文檔的所在位置,如表1-4所示。表1-4Hadoop默認(rèn)配置文件位置配置文件名稱默認(rèn)配置文件所在位置core-site.xmlshare/doc/hadoop/hadoop-project-dist/hadoop-common/core-default.xmlhdfs-site.xmlshare/doc/hadoop/hadoop-project-dist/hadoop-hdfs/hdfs-default.xmlyarn-site.xmlshare/doc/hadoop/hadoop-yarn/hadoop-yarn-common/yarn-default.xmlmapred-site.xmlshare/doc/hadoop/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapreduce-default.xml讀者可以在Hadoop共享文檔的路徑下,找到一個(gè)導(dǎo)航文件share/doc/hadoop/index.html,這個(gè)導(dǎo)航文件是一個(gè)寶庫(kù),除了左下角有上述4個(gè)默認(rèn)配置文件的超級(jí)鏈接,如圖1-32所示,還有Hadoop的學(xué)習(xí)教程,值得讀者細(xì)讀。圖1-32Hadoop共享文檔中導(dǎo)航文件界面需要說(shuō)明的是,為了方便,下文中步驟1-9均在主節(jié)點(diǎn)master上進(jìn)行,從節(jié)點(diǎn)slave1、slave2上的配置文件可以通過(guò)scp命令同步復(fù)制。1.在系統(tǒng)配置文件目錄/etc/profile.d下新建hadoop.sh切換到root用戶,使用“vim/etc/profile.d/hadoop.sh”命令在/etc/profile.d文件夾下新建文件hadoop.sh,添加如下內(nèi)容。exportHADOOP_HOME=/usr/local/hadoop-2.9.2exportPATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH使用命令“source/etc/profile.d/hadoop.sh”重新加載配置文件或者重啟機(jī)器,使之生效,當(dāng)前系統(tǒng)變量“PATH”值如圖1-33所示。圖1-33使用source命令重新加載配置文件hadoop.sh此步驟可省略,之所以將Hadoop安裝目錄下bin和sbin加入到系統(tǒng)環(huán)境變量PATH中,是因?yàn)楫?dāng)輸入啟動(dòng)和管理Hadoop集群命令時(shí),無(wú)需再切換到Hadoop安裝目錄下的bin目錄或者sbin目錄,否則會(huì)出現(xiàn)錯(cuò)誤信息“bash:****:commandnotfound...”。由于在五(四)中已將Hadoop安裝目錄的權(quán)限賦給xuluhui用戶,所以接下來(lái)的2-9步驟均在普通用戶xuluhui下完成。2.配置hadoop-env.sh環(huán)境變量配置文件hadoop-env.sh主要配置Java的安裝路徑JAVA_HOME、Hadoop日志存儲(chǔ)路徑HADOOP_LOG_DIR及添加SSH的配置選項(xiàng)HADOOP_SSH_OPTS等。本實(shí)驗(yàn)中關(guān)于hadoop-env.sh配置文件的修改具體如下。(1)第25行“exportJAVA_HOME=${JAVA_HOME}”修改為:exportJAVA_HOME=/usr/java/jdk1.8.0_191(2)第26行空行處加入:exportHADOOP_SSH_OPTS='-oStrictHostKeyChecking=no'這里要說(shuō)明的是,ssh的選項(xiàng)“StrictHostKeyChecking”用于控制當(dāng)目標(biāo)主機(jī)尚未進(jìn)行過(guò)認(rèn)證時(shí),是否顯示信息“Areyousureyouwanttocontinueconnecting(yes/no)?”。所以當(dāng)?shù)卿浧渌鼨C(jī)器時(shí),只需要ssh-oStrictHostKeyChecking=no就可以直接登錄,不會(huì)有上面的提示信息,不需要人工干預(yù)輸入“yes”,而且還會(huì)將目標(biāo)主機(jī)key加到~/.ssh/known_hosts文件里。(3)第113行“exportHADOOP_PID_DIR=${HADOOP_PID_DIR}”指定HDFS守護(hù)進(jìn)程號(hào)的保存位置,默認(rèn)為“/tmp”,由于該文件夾用以存放臨時(shí)文件,系統(tǒng)定時(shí)會(huì)自動(dòng)清理,因此本實(shí)驗(yàn)將“HADOOP_PID_DIR”設(shè)置為Hadoop安裝目錄下的目錄pids,如下所示,其中目錄pids會(huì)隨著HDFS守護(hù)進(jìn)程的啟動(dòng)而由系統(tǒng)自動(dòng)創(chuàng)建,無(wú)需用戶手工創(chuàng)建。exportHADOOP_PID_DIR=${HADOOP_HOME}/pids3.配置mapred-env.sh環(huán)境變量配置文件mapred-env.sh主要配置Java安裝路徑JAVA_HOME、MapReduce日志存儲(chǔ)路徑HADOOP_MAPRED_LOG_DIR等,之所以再次設(shè)置JAVA_HOME,是為了保證所有進(jìn)程使用的是同一個(gè)版本的JDK。本實(shí)驗(yàn)中關(guān)于mapred-env.sh配置文件的修改具體如下。(1)第16行注釋“#exportJAVA_HOME=/home/y/libexec/jdk1.6.0/”修改為:exportJAVA_HOME=/usr/java/jdk1.8.0_191(2)第28行指定MapReduce守護(hù)進(jìn)程號(hào)的保存位置,默認(rèn)為“/tmp”,同以上“HADOOP_PID_DIR”,此處注釋“#exportHADOOP_MAPRED_PID_DIR=”修改為Hadoop安裝目錄下的目錄pids,如下所示,其中目錄pids會(huì)隨著MapReduce守護(hù)進(jìn)程的啟動(dòng)而由系統(tǒng)自動(dòng)創(chuàng)建,無(wú)需用戶手工創(chuàng)建。exportHADOOP_MAPRED_PID_DIR=${HADOOP_HOME}/pids4.配置yarn-env.shYARN是Hadoop的資源管理器,環(huán)境變量配置文件yarn-env.sh主要配置Java安裝路徑JAVA_HOME、YARN日志存放路徑Y(jié)ARN_LOG_DIR等。本實(shí)驗(yàn)中關(guān)于yarn-env.sh配置文件的修改具體如下。(1)第23行注釋“#exportJAVA_HOME=/home/y/libexec/jdk1.6.0/”修改為:exportJAVA_HOME=/usr/java/jdk1.8.0_191(2)yarn-env.sh文件中并未提供YARN_PID_DIR配置項(xiàng),用于指定YARN守護(hù)進(jìn)程號(hào)的保存位置,在該文件最后添加一行,內(nèi)容如下所示,其中目錄pids會(huì)隨著YARN守護(hù)進(jìn)程的啟動(dòng)而由系統(tǒng)自動(dòng)創(chuàng)建,無(wú)需用戶手工創(chuàng)建。exportYARN_PID_DIR=${HADOOP_HOME}/pids5.配置core-site.xmlcore-site.xml是hadoopcore配置文件,如HDFS和MapReduce常用的I/O設(shè)置等,其中包括很多配置項(xiàng),但實(shí)際上,大多數(shù)配置項(xiàng)都有默認(rèn)項(xiàng),也就是說(shuō),很多配置項(xiàng)即使不配置,也無(wú)關(guān)緊要,只是在特定場(chǎng)合下,有些默認(rèn)值無(wú)法工作,這時(shí)再找出來(lái)配置特定值。本實(shí)驗(yàn)中關(guān)于core-site.xml配置文件的修改如下所示。<configuration><property><name>fs.defaultFS</name><value>hdfs://30:9000</value></property><property><name>hadoop.tmp.dir</name><value>/usr/local/hadoop-2.9.2/hdfsdata</value></property><property><name>io.file.buffer.size</name><value>131072</value></property></configuration>core-site.xml中幾個(gè)重要配置項(xiàng)的參數(shù)名、功能、默認(rèn)值、本實(shí)驗(yàn)中設(shè)置值如表1-5所示。表1-5core-site.xml重要配置項(xiàng)參數(shù)說(shuō)明配置項(xiàng)參數(shù)名功能默認(rèn)值本實(shí)驗(yàn)設(shè)置值fs.defaultFSHDFS的文件URIfile:///hdfs://30:9000io.file.buffer.sizeIO文件的緩沖區(qū)大小4096131072hadoop.tmp.dirHadoop的臨時(shí)目錄/tmp/hadoop-${}/usr/local/hadoop-2.9.2/hdfsdata關(guān)于core-site.xml更多配置項(xiàng)的說(shuō)明,讀者請(qǐng)參考本地幫助文檔share/doc/hadoop/hadoop-project-dist/hadoop-common/core-default.xml,或者官網(wǎng)地址/docs/r2.9.2/hadoop-project-dist/hadoop-common/core-default.xml。6.配置hdfs-site.xmlhdfs-site.xml配置文件主要配置HDFS分項(xiàng)數(shù)據(jù),如字空間元數(shù)據(jù)、數(shù)據(jù)塊、輔助節(jié)點(diǎn)的檢查點(diǎn)的存放路徑等,不修改配置項(xiàng)的采用默認(rèn)值即可,本實(shí)驗(yàn)中關(guān)于hdfs-site.xml配置文件未做任何修改。hdfs-site.xml中幾個(gè)重要配置項(xiàng)的參數(shù)名、功能、默認(rèn)值、本實(shí)驗(yàn)中設(shè)置值如表1-6所示。表1-6hdfs-site.xml重要配置項(xiàng)參數(shù)說(shuō)明配置項(xiàng)參數(shù)名功能默認(rèn)值本實(shí)驗(yàn)設(shè)置值.dir元數(shù)據(jù)存放位置file://${hadoop.tmp.dir}/dfs/name未修改dfs.datanode.data.dir數(shù)據(jù)塊存放位置file://${hadoop.tmp.dir}/dfs/data未修改node.checkpoint.dir輔助節(jié)點(diǎn)的檢查點(diǎn)存放位置file://${hadoop.tmp.dir}/dfs/namesecondary未修改dfs.blocksizeHDFS文件塊大小134217728未修改dfs.replicationHDFS文件塊副本數(shù)3未修改node.http-addressNameNodeWebUI地址和端口:50070未修改由于上一步對(duì)core-site.xml的修改中將Hadoop的臨時(shí)目錄設(shè)置為“/usr/local/hadoop-2.9.2/hdfsdata”,故本實(shí)驗(yàn)中將元數(shù)據(jù)存放在主節(jié)點(diǎn)的“/usr/local/hadoop-2.9.2/hdfsdata/dfs/name”,數(shù)據(jù)塊存放在從節(jié)點(diǎn)的“/usr/local/hadoop-2.9.2/hdfsdata/dfs/data”,輔助節(jié)點(diǎn)的檢查點(diǎn)存放在主節(jié)點(diǎn)的“/usr/local/hadoop-2.9.2/hdfsdata/dfs/namesecondary”,這些目錄都會(huì)隨著HDFS的格式化、HDFS守護(hù)進(jìn)程的啟動(dòng)而由系統(tǒng)自動(dòng)創(chuàng)建,無(wú)需用戶手工創(chuàng)建。關(guān)于hdfs-site.xml更多配置項(xiàng)的說(shuō)明,讀者請(qǐng)參考本地幫助文檔share/doc/hadoop/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml,或者官網(wǎng)地址/docs/r2.9.2/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml。7.配置mapred-site.xmlmapred-site.xml配置文件是有關(guān)MapReduce計(jì)算框架的配置信息,Hadoop配置文件中沒(méi)有mapred-site.xml,但有mapred-site.xml.template,讀者使用命令例如“cpmapred-site.xml.templatemapred-site.xml”將其復(fù)制并重命名為“mapred-site.xml”即可,然后用vim編輯相應(yīng)的配置信息,本實(shí)驗(yàn)中對(duì)于mapred-site.xml的添加內(nèi)容如下所示。<configuration><property><name></name><value>yarn</value></property></configuration>mapred-site.xml中幾個(gè)重要配置項(xiàng)的參數(shù)名、功能、默認(rèn)值、本實(shí)驗(yàn)中設(shè)置值如表1-7所示。表1-7mapred-site.xml重要配置項(xiàng)參數(shù)說(shuō)明配置項(xiàng)參數(shù)名功能默認(rèn)值本實(shí)驗(yàn)設(shè)置值MapReduce應(yīng)用程序的執(zhí)行框架localyarnmapreduce.jobhistory.webapp.addressMapReduceWebUI端口號(hào)19888未修改mapreduce.job.maps每個(gè)MapReduce作業(yè)的map任務(wù)數(shù)目2未修改mapreduce.job.reduces每個(gè)MapReduce作業(yè)的reduce任務(wù)數(shù)目1未修改關(guān)于mapred-site.xml更多配置項(xiàng)的說(shuō)明,讀者請(qǐng)參考本地幫助文檔share/doc/hadoop/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapreduce-default.xml,或者官網(wǎng)地址/docs/r2.9.2/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml。8.配置yarn-site.xmlyarn-site.xml是有關(guān)資源管理器的YARN配置信息,本實(shí)驗(yàn)中對(duì)于yarn-site.xml的添加內(nèi)容如下所示。<configuration><property><name>yarn.resourcemanager.hostname</name><value>master</value></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property></configuration>yarn-site.xml中幾個(gè)重要配置項(xiàng)的參數(shù)名、功能、默認(rèn)值、本實(shí)驗(yàn)中設(shè)置值如表1-8所示。表1-8yarn-site.xml重要配置項(xiàng)參數(shù)說(shuō)明配置項(xiàng)參數(shù)名功能默認(rèn)值本實(shí)驗(yàn)設(shè)置值yarn.resourcemanager.hostname提供ResourceManager服務(wù)的主機(jī)名masteryarn.resourcemanager.scheduler.class啟用的資源調(diào)度器主類org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler未修改yarn.resourcemanager.webapp.addressResourceManagerWebUIhttp地址${yarn.resourcemanager.hostname}:8088未修改yarn.nodemanager.local-dirs中間結(jié)果存放位置${hadoop.tmp.dir}/nm-local-dir未修改yarn.nodemanager.aux-servicesNodeManager上運(yùn)行的附屬服務(wù)mapreduce_shuffle由于之前步驟已將core-site.xml中Hadoop的臨時(shí)目錄設(shè)置為“/usr/local/hadoop-2.9.2/hdfsdata”,故本實(shí)驗(yàn)中未修改配置項(xiàng)“yarn.nodemanager.local-dirs”,中間結(jié)果的存放位置為“/usr/local/hadoop-2.9.2/hdfsdata/nm-local-dir”,這個(gè)目錄會(huì)隨著YARN守護(hù)進(jìn)程的啟動(dòng)而在由系統(tǒng)自動(dòng)在所有從節(jié)點(diǎn)上創(chuàng)建,無(wú)需用戶手工創(chuàng)建。另外,“yarn.nodemanager.aux-services”需配置成“mapreduce_shuffle”,才可運(yùn)行MapReduce程序。關(guān)于yarn-site.xml更多配置項(xiàng)的說(shuō)明,讀者請(qǐng)參考本地幫助文檔share/doc/hadoop/hadoop-yarn/hadoop-yarn-common/yarn-default.xml,或者官網(wǎng)地址/docs/r2.9.2/hadoop-yarn/hadoop-yarn-common/yarn-default.xml。9.配置slaves配置文件slaves用于指定從節(jié)點(diǎn)主機(jī)名列表,在這個(gè)文件中,需要添加所有的從節(jié)點(diǎn)主機(jī)名,每一個(gè)主機(jī)名占一行,本實(shí)驗(yàn)中slaves文件的內(nèi)容如下所示。slave1slave2需要注意的是,在slaves文件里,有一個(gè)默認(rèn)值localhost,一定要?jiǎng)h除,若不刪除,雖然后面添加了所有的從節(jié)點(diǎn)主機(jī)名,Hadoop還是無(wú)法逃脫“偽分布模式”的命運(yùn)。10.同步配置文件以上配置文件要求Hadoop集群中每個(gè)節(jié)點(diǎn)都“機(jī)手一份”,快捷的方法是在主節(jié)點(diǎn)master上配置好,然后利用scp命令將配置好的文件同步到從節(jié)點(diǎn)slave1、slave2上。scp是securecopy的縮寫,scp是Linux系統(tǒng)下基于ssh登陸進(jìn)行安全的遠(yuǎn)程文件拷貝命令,Linux的scp命令可以在Linux服務(wù)器之間復(fù)制文件和目錄。(1)同步hadoop.sh切換到root用戶下,將master節(jié)點(diǎn)上的文件hadoop.sh同步到其他2臺(tái)從節(jié)點(diǎn)上,命令如下所示。scp/etc/profile.d/hadoop.shroot@slave1:/etc/profile.d/scp/etc/profile.d/hadoop.shroot@slave2:/etc/profile.d/同步hadoop.sh到slave1的命令及效果如圖1-34所示。圖1-34同步hadoop.sh到slave1的命令及效果同步hadoop.sh到slave1后,會(huì)發(fā)現(xiàn)在/root目錄下自動(dòng)創(chuàng)建目錄.ssh及其下文件known_hosts,且文件內(nèi)容增加1行關(guān)于slave1的key,如圖1-35所示。圖1-35同步hadoop.sh到slave1后自動(dòng)創(chuàng)建.ssh目錄及文件known_hosts同理,同步hadoop.sh到slave2的命令及效果如圖1-36所示。圖1-36同步hadoop.sh到slave1的命令及效果(2)同步Hadoop配置文件切換到普通用戶xuluhui下,將master上/usr/local/hadoop-2.9.2/etc/hadoop下的配置文件同步到其他2個(gè)從節(jié)點(diǎn)上。首先,通過(guò)如

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論