![《大數(shù)據(jù)技術實戰(zhàn)案例教程》課件實驗指導書-實驗1部署全分布模式Hadoop集群_第1頁](http://file4.renrendoc.com/view4/M02/26/08/wKhkGGZ38SmAHK9DAAHdtbnJtJc017.jpg)
![《大數(shù)據(jù)技術實戰(zhàn)案例教程》課件實驗指導書-實驗1部署全分布模式Hadoop集群_第2頁](http://file4.renrendoc.com/view4/M02/26/08/wKhkGGZ38SmAHK9DAAHdtbnJtJc0172.jpg)
![《大數(shù)據(jù)技術實戰(zhàn)案例教程》課件實驗指導書-實驗1部署全分布模式Hadoop集群_第3頁](http://file4.renrendoc.com/view4/M02/26/08/wKhkGGZ38SmAHK9DAAHdtbnJtJc0173.jpg)
![《大數(shù)據(jù)技術實戰(zhàn)案例教程》課件實驗指導書-實驗1部署全分布模式Hadoop集群_第4頁](http://file4.renrendoc.com/view4/M02/26/08/wKhkGGZ38SmAHK9DAAHdtbnJtJc0174.jpg)
![《大數(shù)據(jù)技術實戰(zhàn)案例教程》課件實驗指導書-實驗1部署全分布模式Hadoop集群_第5頁](http://file4.renrendoc.com/view4/M02/26/08/wKhkGGZ38SmAHK9DAAHdtbnJtJc0175.jpg)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
《大數(shù)據(jù)技術實戰(zhàn)案例教程》實驗指導書實驗1部署全分布模式Hadoop集群編寫者:徐魯輝實驗1部署全分布模式Hadoop集群1.1實驗目的1.熟練掌握Linux基本命令。2.掌握靜態(tài)IP地址的配置、主機名和域名映射的修改。3.掌握Linux環(huán)境下Java的安裝、環(huán)境變量的配置、Java基本命令的使用。4.理解為何需要配置SSH免密登錄,掌握Linux環(huán)境下SSH的安裝、免密登錄的配置。5.熟練掌握在Linux環(huán)境下部署全分布模式Hadoop集群。1.2實驗環(huán)境本實驗所需的軟硬件環(huán)境包括PC、VMwareWorkstationPro、CentOS安裝包、OracleJDK安裝包、Hadoop安裝包。1.3實驗內(nèi)容1.規(guī)劃部署。2.準備機器。3.準備軟件環(huán)境:配置靜態(tài)IP;修改主機名;編輯域名映射;安裝和配置Java;安裝和配置SSH免密登錄。4.獲取和安裝Hadoop。5.配置全分布模式Hadoop集群。6.關閉防火墻。7.格式化文件系統(tǒng)。8.啟動和驗證Hadoop。9.關閉Hadoop。1.4實驗原理1.4.1Linux基本命令Linux是一套免費使用和自由傳播的類Unix操作系統(tǒng),是一個基于POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的操作系統(tǒng)。它能運行主要的UNIX工具軟件、應用程序和網(wǎng)絡協(xié)議,它支持32位和64位硬件。Linux繼承了Unix以網(wǎng)絡為核心的設計思想,是一個性能穩(wěn)定的多用戶網(wǎng)絡操作系統(tǒng)。Linux操作系統(tǒng)誕生于1991年10月5日。Linux存在著許多不同的版本,但它們都使用了Linux內(nèi)核。Linux可安裝在各種計算機硬件設備中,比如手機、平板電腦、路由器、視頻游戲控制臺、臺式計算機、大型機和超級計算機。嚴格來講,Linux這個詞本身只表示Linux內(nèi)核,但實際上人們已經(jīng)習慣用Linux來形容整個基于Linux內(nèi)核且使用GNU工程各種工具和數(shù)據(jù)庫的操作系統(tǒng)。此處將介紹實驗中涉及到的一些Linux操作系統(tǒng)的基本命令。1)查看當前目錄pwd命令用于顯示當前目錄,效果如下所示。[xuluhui@localhost~]$pwd/home/xuluhui2)切換目錄cd命令用來切換目錄,效果如下所示。[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命令用于拷貝文件,若拷貝的對象為目錄,則需要使用-r參數(shù),效果如下所示。[xuluhui@localhost~]$cp-rTestDataTestData2[xuluhui@localhost~]$lsDesktopDownloadsPicturesTemplatesTestData2DocumentsMusicPublicTestDataVideos6)移動或重命名文件或目錄mv命令用于移動文件,在實際使用中,也常用于重命名文件或目錄,效果如下所示。[xuluhui@localhost~]$mvTestData2TestDataxlh[xuluhui@localhost~]$lsDesktopDownloadsPicturesTemplatesTestDataxlhDocumentsMusicPublicTestDataVideos7)刪除文件或目錄rm命令用于刪除文件,若刪除的對象為目錄,則需要使用-r參數(shù),效果如下所示。[xuluhui@localhost~]$rm-rfTestDataxlh[xuluhui@localhost~]$lsDesktopDownloadsPicturesTemplatesVideosDocumentsMusicPublicTestData8)查看進程ps命令用于顯示當前運行中進程的相關信息,效果如下所示。[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)查看機器IP配置ipaddress命令用于查看機器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命令也可用于查看機器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)TXerrors0dropped0overruns0carrier0collisions01.4.2vim編輯器vim是一個類似于vi的著名的功能強大、高度可定制的文本編輯器,在vi的基礎上改進和增加了很多特性,vim是vi的加強版,比vi更容易使用,vi的命令幾乎全部都可以在vim上使用。vi/vim共分為三種工作模式:命令模式(Commandmode)、輸入模式(Insertmode)和末行模式(Lastlinemode)。用戶剛剛啟動vi/vim,便進入了命令模式,此狀態(tài)下敲擊鍵盤動作會被vim識別為命令,而非輸入字符,命令模式下是常用的幾個命令包括:“i”切換到輸入模式,以輸入字符;“x”刪除當前光標所在處的字符;“:”切換到末行模式,以在最底端一行輸入命令。在命令模式下按下“i”就進入了輸入模式,在輸入模式中,可以使用若干按鍵完成相應任務,例如字符按鍵以及Shift組合,輸入字符;Insert按鍵切換光標為輸入/替換模式,光標將變成豎線/下劃線;ESC按鍵退出輸入模式,切換到命令模式等。在命令模式下按下“:”(英文冒號)就進入末行模式,末行模式下可以輸入單個或多個字符的命令,可用的命令非常多,例“q”可以退出程序,“w”用于保存文件等,按ESC鍵可隨時退出末行模式。vi/vim三種工作模式的轉換如圖1-1所示。命令模式命令模式輸入模式末行模式輸入i,a,oESC鍵:ESC鍵vi/vim文件名進入:wq保存退出圖1-1vi/vim三種工作模式vim是實驗中用到最多的文件編輯命令。在命令行輸入“vim文件名”后,默認進入“命令模式”,不可編輯文檔,需按“i”鍵,方可編輯文檔,編輯結束后,需按“ESC”鍵,先退回命令模式,再按“:”進入末行模式,接著輸入“wq”方可保存退出。1.4.3Java基本命令在安裝和配置Java后,可以使用Java命令來編譯、運行或者打包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)查看當前所有Java進程jps(JavaVirtualMachineProcessStatusTool)是Java提供的一個顯示當前所有Java進程pid的命令,適合在linux/unix平臺上簡單察看當前Java進程的一些簡單情況,如下所示。[root@localhost~]$jps11973Jps3)編譯Java程序[root@localhost~]#javacHelloWorld.java4)運行Java程序[root@localhost~]#javaHelloWorldWelcometoJava.5)打包Java程序[root@localhost~]#jar-cvfHelloWorld.jarHelloWorld.classaddedmanifestadding:HelloWorld.class(in=430)(out=295)(deflated31%)由于打包時并沒有指定manifest文件,因此該jar包無法直接運行,如下所示。[root@localhost~]#java-jarHelloWorld.jarnomainmanifestattribute,inHelloWorld.jar6)打包攜帶manifest文件的Java程序manifest.mf文件用于描述整個Java項目,最常用的功能是指定項目的入口類,新建文件“manifest.mf”,文件內(nèi)容輸入“Main-Class:HelloWorld”。[root@localhost~]#vimmanifest.mf打包時,加入-m參數(shù),并指定manifest文件名。[root@localhost~]#jar-cvfmHelloWorld.jarmanifest.mfHelloWorld.classaddedmanifestadding:HelloWorld.class(in=430)(out=295)(deflated31%)7)運行jar包可使用“java”命令直接運行jar包。[root@localhost~]#java-jarHelloWorld.jarWelcometoJava.1.4.4SSH安全通信協(xié)議對于遠程管理其它機器,一般使用遠程桌面或者telnet。Linux安裝時自帶了telnet,但是telnet的缺點是通信不加密,存在不安全因素,只適合內(nèi)網(wǎng)訪問。為解決這個問題,推出了安全通信協(xié)議即SSH(SecureShell),通過SSH可以安全地進行網(wǎng)絡數(shù)據(jù)傳輸,這得益于SSH采用的是非對稱加密體系,傳輸內(nèi)容使用RSA或者DSA加密,可以避免網(wǎng)絡竊聽。非對稱加密的工作流程包括以下幾個步驟:服務端接受到遠程客戶端登陸請求,將自己的公鑰發(fā)送給客戶端;客戶端利用這個公鑰對數(shù)據(jù)進行加密;客戶端將加密的信息發(fā)送給服務端;服務端利用自己的私鑰進行解密,驗證其合法性;驗證結果返回客戶端響應。不過需要注意的是,Hadoop并不是通過SSH協(xié)議進行數(shù)據(jù)傳輸?shù)?,而是Hadoop控制腳本需要依賴SSH來執(zhí)行針對整個集群的操作。Hadoop在啟動和停止HDFS、YARN的時候,需要主節(jié)點上的進程通過SSH協(xié)議啟動或停止從節(jié)點上的各種守護進程。也就是說如果不配置SSH免密登錄對Hadoop的使用沒有任何影響,只需在啟動和停止Hadoop時輸入每個從節(jié)點的用戶名和密碼即可。試想,若管理成百上千個節(jié)點組成的Hadoop集群,連接每個從節(jié)點時都輸入密碼將是一項繁雜的工作。因此,配置Hadoop主節(jié)點到各個從節(jié)點的SSH免密登錄是有需要的。1.4.5HadoopHadoop是Apache開源組織提供的一個分布式存儲和計算的軟件框架,它具有高可用、彈性可擴展的特點,非常適合處理海量數(shù)據(jù)。Hadoop由ApacheLucence創(chuàng)始人道格·卡丁創(chuàng)建,Lucence是一個應用廣泛的文本搜索系統(tǒng)庫。Hadoop起源于開源的網(wǎng)絡搜索引擎ApacheNutch,它本身是Lucence項目的一部分。第一代Hadoop(即Hadoop1.0)的核心由分布式文件系統(tǒng)HDFS和分布式計算框架MapReduce組成,為了克服Hadoop1.0中HDFS和MapReduce的架構設計和應用性能方面的各種問題,提出了第二代Hadoop(即Hadoop2.0),Hadoop2.0的核心包括分布式文件系統(tǒng)HDFS、統(tǒng)一資源管理和調(diào)度框架YARN和分布式計算框架MapReduce。HDFS是谷歌文件系統(tǒng)GFS的開源實現(xiàn),是面向普通硬件環(huán)境的分布式文件系統(tǒng),適用于大數(shù)據(jù)場景的數(shù)據(jù)存儲,提供了高可靠、高擴展、高吞吐率的數(shù)據(jù)存儲服務。MapReduce是谷歌MapReduce的開源實現(xiàn),是一種簡化的分布式應用程序開發(fā)的編程模型,允許開發(fā)人員在不了解分布式系統(tǒng)底層細節(jié)和缺少并行應用開發(fā)經(jīng)驗的情況下,能快速輕松地編寫出分布式并行程序,將其運行于計算機集群上,完成對大規(guī)模數(shù)據(jù)集的存儲和計算。YARN是將MapReduce1.0中JobTracker的資源管理功能單獨剝離出來而形成,它是一個純粹的資源管理和調(diào)度框架,并解決了Hadoop1.0中只能運行MapReduce框架的限制,可在YARN上運行各種不同類型計算框架包括MapReduce、Spark、Storm等。1.Hadoop版本Hadoop的發(fā)行版本有兩類,一類是由社區(qū)維護的免費開源的ApacheHadoop,另一類是一些商業(yè)公司如Cloudera、Hortonworks、MapR等推出的Hadoop商業(yè)版。截止到目前,ApacheHadoop版本分為三代,分別稱為Hadoop1.0、Hadoop2.0、Hadoop3.0。Hadoop商業(yè)版主要是提供對各項服務的支持,高級功能要收取一定費用,這對一些研發(fā)能力不太強的企業(yè)來說是非常有利的,公司只要出一定的費用就能使用到一些高級功能,每個發(fā)行版都有自己的特點,目前使用最多的是ClouderaDistributionHadoop(CDH)和HortonworksDataPlatform(HDP)。請讀者注意,若無特別強調(diào),本書均是圍繞ApacheHadoop2.0展開描述和實驗的。2.Hadoop運行環(huán)境對于大部分Java開源產(chǎn)品而言,在部署與運行之前,總是需要搭建一個合適的環(huán)境,通常包括操作系統(tǒng)和Java環(huán)境兩方面。同樣,Hadoop部署與運行所需要的系統(tǒng)環(huán)境,同樣包括操作系統(tǒng)和Java環(huán)境,另外還需要SSH。1)操作系統(tǒng)Hadoop運行平臺支持以下兩種:(1)Windows:Hadoop支持Windows,但由于Windows操作系統(tǒng)本身不太適合作為服務器操作系統(tǒng),所以編者不介紹Windows下安裝和配置Hadoop,讀者可自行參考網(wǎng)址/hadoop/Hadoop2OnWindows。(2)GNU/Linux:Hadoop的最佳運行環(huán)境無疑是開源操作系統(tǒng)Linux,Linux的發(fā)行版本眾多,常見的有CentOS、Ubuntu、RedHat、Debian、Fedora、SUSE、openSUSE等。本書采用的操作系統(tǒng)為Linux發(fā)行版CentOS7。2)Java環(huán)境Hadoop使用Java語言編寫,因此它的運行環(huán)境需要Java環(huán)境的支持。Hadoop3.x需要Java8,Hadoop2.7及以后版本需要Java7或Java8,Hadoop2.6及早期版本需要Java6。本書采用的Java為OracleJDK1.8。3)SSHHadoop集群若想運行,其運行平臺Linux必須安裝SSH,且sshd服務必須運行,只有這樣,才能使用Hadoop腳本管理遠程Hadoop守護進程。本書選用的CentOS7自帶有SSH。3.Hadoop運行模式Hadoop運行模式有以下三種:(1)單機模式(Local/StandaloneMode):只在一臺計算機上運行,不需任何配置,在這種模式下,Hadoop所有的守護進程都變成了一個Java進程,存儲采用本地文件系統(tǒng),沒有采用分布式文件系統(tǒng)HDFS。(2)偽分布模式(Pseudo-DistributedMode):只在一臺計算機上運行,在這種模式下,Hadoop所有守護進程都運行在一個節(jié)點上,在一個節(jié)點上模擬了一個具有Hadoop完整功能的微型集群,存儲采用分布式文件系統(tǒng)HDFS,但是HDFS的名稱節(jié)點和數(shù)據(jù)節(jié)點都位于同一臺計算機上。(3)全分布模式(Fully-DistributedMode):在多臺計算機上運行,在這種模式下,Hadoop的守護進程運行在多個節(jié)點上,形成一個真正意義上的集群,存儲采用分布式文件系統(tǒng)HDFS,且HDFS的名稱節(jié)點和數(shù)據(jù)節(jié)點位于不同計算機上。三種運行模式各有優(yōu)缺點。單機模式配置最簡單,但它與用戶交互的方式不同于全分布模式;對于節(jié)點數(shù)目受限的初學者可以采用偽分布模式,雖然只有一個節(jié)點支撐整個Hadoop集群,但是Hadoop在偽分布模式下的操作方式與在全分布模式下的操作幾乎完全相同;全分布模式是使用Hadoop的最佳方式,真實Hadoop集群的運行均采用該模式,但它需要最多的配置工作和架構所需要的機器集群。4.Hadoop2.0生態(tài)系統(tǒng)經(jīng)過十幾年的發(fā)展,目前,Hadoop已經(jīng)成長為一個龐大的體系。狹義上來說,Hadoop是一個適合大數(shù)據(jù)的分布式存儲和分布式計算的平臺,Hadoop2.0主要由三部分構成:分布式文件系統(tǒng)HDFS、統(tǒng)一資源管理和調(diào)度框架YARN、分布式計算框架MapReduce;但廣義上來講,Hadoop是指以Hadoop為基礎的生態(tài)系統(tǒng),是一個龐大體系,Hadoop僅是其中最基礎、最重要的部分,生態(tài)系統(tǒng)中每個子系統(tǒng)只負責解決某一特定問題。Hadoop2.0生態(tài)系統(tǒng)如圖1-2所示。HiveHiveMapReduceSparkImpalaZooKeeperKafkaFlumeYARNHDFSCommonPigMahoutSqoopHBaseAmbariSparkSQL圖1-2Hadoop2.0生態(tài)系統(tǒng)5.Hadoop體系架構Hadoop集群采用主從架構(Master/Slave),NameNode與ResourceManager為Master,DataNode與NodeManager為Slaves,守護進程NameNode和DataNode負責完成HDFS的工作,守護進程ResourceManager和NodeManager則負責完成YARN的工作。Hadoop2.0集群架構圖如圖1-3所示。NameNodeNameNodeResourceManagerDataNodeNodeManagerDataNodeNodeManagerDataNodeNodeManager…圖1-3Hadoop2.0集群架構6.Hadoop配置文件Hadoop配置文件很多,配置文件位于$HADOOP_HOME/etc/hadoop,關鍵的幾個配置文件如表1-1所示,偽分布模式和全分布模式下的Hadoop集群所需修改的配置文件有差異。表1-1Hadoop主要配置文件文件名稱格式描述hadoop-env.shBash腳本記錄運行Hadoop要用的環(huán)境變量yarn-env.shBash腳本記錄運行YARN要用的環(huán)境變量(覆蓋hadoop-env.sh中設置的變量)mapred-env.shBash腳本記錄運行MapReduce要用的環(huán)境變量覆蓋hadoop-env.sh中設置的變量)core-site.xmlHadoop配置XMLHadoopCore的配置項,包括HDFS、MapReduce和YARN常用的I/O設置等hdfs-site.xmlHadoop配置XMLHDFS守護進程的配置項,包括NameNode、SecondaryNameNode、DataNode等yarn-site.xmlHadoop配置XMLYARN守護進程的配置項,包括ResourceManager、NodeManager等mapred-site.xmlHadoop配置XMLMapReduce守護進程的配置項,包括JobHistoryServerslaves純文本運行DataNode和NodeManager的從節(jié)點機器列表,每行1個主機名讀者可以在Hadoop共享文檔目錄下找到一個導航文件$HADOOP_HOME/share/doc/Hadoop/index.html,除了左下角有4個默認配置文件的超級鏈接,如圖1-4所示,還有Hadoop的學習教程,值得讀者細讀。圖1-4Hadoop共享文檔中導航文件界面1.5實驗步驟1.5.1規(guī)劃部署1.Hadoop集群部署規(guī)劃全分布模式下部署Hadoop集群時,最低需要兩臺機器,一個主節(jié)點和一個從節(jié)點。本書擬將Hadoop集群運行在Linux上,將使用三臺安裝有Linux操作系統(tǒng)的機器,主機名分別為master、slave1、slave2,其中master作為主節(jié)點,slave1和slave2作為從節(jié)點。具體Hadoop集群部署規(guī)劃表如表1-2所示。表1-2全分布模式Hadoop集群部署規(guī)劃表主機名IP地址運行服務軟硬件配置master(主節(jié)點)30NameNodeSecondaryNameNodeResourceManagerJobHistoryServer內(nèi)存:4GCPU:1個2核硬盤:40G操作系統(tǒng):CentOS7.6.1810Java:OracleJDK8u191Hadoop:Hadoop2.9.2slave1(從節(jié)點1)31DataNodeNodeManager內(nèi)存:1GCPU:1個1核硬盤:20G操作系統(tǒng):CentOS7.6.1810Java:OracleJDK8u191Hadoop:Hadoop2.9.2slave2(從節(jié)點2)32DataNodeNodeManager內(nèi)存:1GCPU:1個1核硬盤:20G操作系統(tǒng):CentOS7.6.1810Java:OracleJDK8u191Hadoop:Hadoop2.9.22.軟件選擇1)虛擬機工具鑒于多數(shù)用戶使用的是Windows操作系統(tǒng),作為Hadoop初學者,建議在Windows操作系統(tǒng)上安裝虛擬機工具,并在其上創(chuàng)建Linux虛擬機。編者采用的虛擬機工具為VMwareWorkstationPro,讀者也可采用其他虛擬機工具例如OracleVirtualBox等。2)Linux操作系統(tǒng)編者采用的Linux操作系統(tǒng)為免費的CentOS(CommunityEnterpriseOperatingSystem,社區(qū)企業(yè)操作系統(tǒng)),CentOS是RedHatEnterpriseLinux依照開放源代碼規(guī)定釋出的源代碼所編譯而成,讀者也可以使用其他Linux操作系統(tǒng)例如Ubuntu、RedHat、Debian、Fedora、SUSE、openSUSE等。3)JavaHadoop使用Java語言編寫,因此它的運行環(huán)境需要Java環(huán)境的支持。由于Hadoop2.7及以后版本需要Java7或Java8,而本書采用Hadoop2.9.2版本,因此采用的Java為OracleJDK1.8。4)SSH由于Hadoop控制腳本需要依賴SSH來管理遠程Hadoop守護進程,因此Hadoop集群的運行平臺Linux必須安裝SSH,且sshd服務必須運行。本書選用的CentOS7自帶有SSH。5)HadoopHadoop起源于2002年的Apache項目Nutch,2004年道格·卡丁開發(fā)了現(xiàn)在HDFS和MapReduce的最初版本,2006年ApacheHadoop項目正式啟動,以支持MapReduce和HDFS的獨立發(fā)展。ApacheHadoop的版本經(jīng)歷了1.0、2.0、3.0,目前最新穩(wěn)定版本是2022年5月17日發(fā)布的Hadoop3.3.3,編者采用的是2018年11月19日發(fā)布的穩(wěn)定版Hadoop2.9.2。本節(jié)部署Hadoop集群所使用的各種軟件的名稱、版本、發(fā)布日期及下載地址如表1-3所示。表1-3本節(jié)部署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.html1.5.2準備機器編者使用VMwareWorkstationPro共安裝了3臺CentOS虛擬機,分別為hadoop2.9.2-master、hadoop2.9.2-slave1和hadoop2.9.2-slave2,其中hadoop2.9.2-master的內(nèi)存為4096MB,CPU為1個2核,hadoop2.9.2-slave1和hadoop2.9.2-slave2的內(nèi)存均為1024MB,CPU為1個1核。關于如何使用VMwareWorkstation安裝CentOS虛擬機,可參見配套教學資源“使用VMwareWorkstation安裝CentOS虛擬機過程詳解”。1.5.3準備軟件環(huán)境3臺CentOS虛擬機的軟件環(huán)境準備過程相同,下文以Hadoop集群主節(jié)點的虛擬機hadoop2.9.2-master為例講述,作為從節(jié)點的虛擬機hadoop2.9.2-slave1和hadoop2.9.2-slave2的軟件環(huán)境準備不再贅述。1.配置靜態(tài)IP機器不同,CentOS版本不同,網(wǎng)卡配置文件不盡相同。編者使用的CentOS7.6.1810對應的網(wǎng)卡配置文件為/etc/sysconfig/network-scripts/ifcfg-ens33,讀者可自行查看個人CentOS的網(wǎng)卡配置文件。(1)切換到root用戶,使用命令“vim/etc/sysconfig/network-scripts/ifcfg-ens33”修改網(wǎng)卡配置文件,為該機器設置靜態(tài)IP地址。網(wǎng)卡ifcfg-ens33配置文件較之原始內(nèi)容,變動的內(nèi)容如下所示。BOOTPROTO=staticONBOOT=yesIPADDR=30NETMASK=GATEWAY=DNS1=(2)使用“reboot”命令重啟機器或者“systemctlrestartnetwork.service”命令重啟網(wǎng)絡方可使得配置生效。如圖1-5所示,使用命令“ipaddress”或者簡寫“ipaddr”查看到當前機器的IP地址已設置為靜態(tài)IP“30”。圖1-5使用命令“ipaddr”查看機器IP地址同理,將虛擬機hadoop2.9.2-slave1和hadoop2.9.2-slave2的IP地址依次設置為靜態(tài)IP“31”、“32”。2.修改主機名切換到root用戶,通過修改配置文件/etc/hostname,可以修改Linux主機名,該配置文件中原始內(nèi)容為:localhost.localdomain按照部署規(guī)劃,主節(jié)點的主機名為“master”,將配置文件/etc/hostname中原始內(nèi)容替換為:master使用“reboot”命令重啟機器方可使得配置生效,使用命令“hostname”驗證當前主機名是否已修改為“master”。同理,將虛擬機hadoop2.9.2-slave1和hadoop2.9.2-slave2的主機名依次設置為“slave1”、“slave2”。3.編輯域名映射為協(xié)助用戶便捷訪問該機器而無需記住IP地址串,需要編輯域名映射文件/etc/hosts,在原始內(nèi)容最后追加3行,內(nèi)容如下所示。30master31slave132slave2使用“reboot”命令重啟機器方可使得配置生效。同理,編輯虛擬機hadoop2.9.2-slave1和hadoop2.9.2-slave2的域名映射文件,內(nèi)容同虛擬機hadoop2.9.2-master。至此,3臺CentOS虛擬機的靜態(tài)IP、主機名、域名映射均已修改完畢,用ping命令來檢測各節(jié)點間是否通訊正常,可按“Ctrl+C”組合鍵終止數(shù)據(jù)包的發(fā)送,成功效果如圖1-6所示。圖1-6ping命令檢測各節(jié)點間通訊是否正常4.安裝和配置Java(1)卸載OracleOpenJDK。首先,通過命令“java-version”查看是否已安裝Java。由于CentOS7自帶了OracleOpenJDK,而更建議使用OracleJDK,因此將OracleOpenJDK卸載。其次,使用“rpm-qa|grepjdk”命令查詢jdk軟件,如圖1-7所示。圖1-7使用rpm命令查詢jdk軟件最后,切換到root用戶下,分別使用命令“yum-yremovejava-1.8.0*”和“yum-yremovejava-1.7.0*”卸載openjdk1.8和openjdk1.7。同理,卸載節(jié)點slave1和slave2上的OracleOpenJDK。(2)下載OracleJDK。需要根據(jù)機器所安裝的操作系統(tǒng)和位數(shù)選擇相應JDK安裝包下載,可以使用命令“getconfLONG_BIT”來查詢Linux操作系統(tǒng)是32還是64位;也可以使用命令“file/bin/ls”來顯示Linux版本號。由于編者安裝的是CentOS64位,因此下載的JDK安裝包文件名為2018年10月16日發(fā)布的jdk-8u191-linux-x64.tar.gz,并存放在目錄/home/xuluhui/Downloads下。同理,在節(jié)點slave1和slave2上也下載相同版本的OracleJDK,并存放在目錄/home/xuluhui/Downloads下。(3)安裝OracleJDK。使用tar命令解壓進行安裝,例如安裝到目錄/usr/java下,依次使用如下命令完成。[root@master~]#cd/usr[root@masterusr]#mkdirjava[root@masterusr]#cdjava[root@masterjava]#tar-zxvf/home/xuluhui/Downloads/jdk-8u191-linux-x64.tar.gz同理,在節(jié)點slave1和slave2上也安裝OracleJDK。(4)配置Java環(huán)境。通過修改/etc/profile文件完成環(huán)境變量JAVA_HOME、PATH和CLASSPATH的設置,在配置文件/etc/profile的最后添加如下內(nèi)容:#setjavaenvironmentexportJAVA_HOME=/usr/java/jdk1.8.0_191exportPATH=$JAVA_HOME/bin:$PATHexportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar使用命令“source/etc/profile”重新加載配置文件或者重啟機器,使配置生效,Java環(huán)境變量配置成功后的系統(tǒng)變量“PATH”值如圖1-8所示。圖1-8重新加載配置文件/etc/profile同理,在節(jié)點slave1和slave2上也配置Java環(huán)境。(5)驗證Java。再次使用命令“java-version”,查看Java是否安裝配置成功及其版本,如圖1-9所示。圖1-9查看Java是否安裝配置成功及其版本5.安裝和配置SSH免密登錄需要注意的是,Hadoop并不是通過SSH協(xié)議進行數(shù)據(jù)傳輸?shù)?,而是Hadoop控制腳本需要依賴SSH來執(zhí)行針對整個集群的操作。Hadoop在啟動和停止HDFS、YARN的時候,需要主節(jié)點上的進程通過SSH協(xié)議啟動或停止從節(jié)點上的各種守護進程。也就是說如果不配置SSH免密登錄對Hadoop的使用沒有任何影響,只需在啟動和停止Hadoop時輸入每個從節(jié)點的用戶名和密碼即可。試想,若管理成百上千個節(jié)點組成的Hadoop集群,連接每個從節(jié)點時都輸入密碼將是一項繁雜的工作。因此,配置Hadoop主節(jié)點到各個從節(jié)點的SSH免密登錄是有需要的。(1)安裝SSH。使用命令“rpm-qa|grepssh”查詢SSH是否已經(jīng)安裝,如圖1-10所示。圖1-10查詢SSH是否安裝從圖1-10可以看出,CentOS7已安裝好SSH軟件包,若沒有安裝好,用命令“yum”安裝,命令如下所示。[root@masterjava]#yum-yinstallopenssh[root@masterjava]#yum-yinstallopenssh-server[root@masterjava]#yum-yinstallopenssh-clients(2)修改sshd配置文件。使用命令“vim/etc/ssh/sshd_config”修改sshd配置文件,原始第43行內(nèi)容為:#PubkeyAuthenticationyes修改后為:RSAAuthenticationyesPubkeyAuthenticationyes同理,在節(jié)點slave1和slave2上也修改sshd配置文件。(3)重啟sshd服務。使用如下命令重啟sshd服務,同理,在節(jié)點slave1和slave2上也需要重啟sshd服務。systemctlrestartsshd.service(4)生成公鑰和私鑰。首先,切換到普通用戶xuluhui下,利用“cd~”命令切換回到用戶xuluhui的家目錄下,使用命令“ssh-keygen”在家目錄中生成公鑰和私鑰,如圖1-11所示。圖1-11中,文件id_rsa是私鑰,文件id_rsa.pub是公鑰。圖1-11使用命令“ssh-keygen”生成公鑰和私鑰其次,使用以下命令把公鑰id_rsa.pub的內(nèi)容追加到authorized_keys授權密鑰文件中。[xuluhui@master~]$cat~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys最后,使用以下命令修改密鑰文件的相應權限。[xuluhui@master~]$chmod0600~/.ssh/authorized_keys(5)共享公鑰。經(jīng)過共享公鑰后,就不再需要輸入密碼。因為只有1主2從節(jié)點,所以直接復制公鑰比較方便,將master的公鑰直接復制給slave1、slave2就可以解決主節(jié)點連接從節(jié)點時需要密碼的問題,過程如圖1-12所示。圖1-12將master公鑰復制給slave1并測試ssh免密登錄slave1從圖1-12可以看出,已能從master機器通過“ssh”命令免密登錄到slave1機器上。同理,將master的公鑰首先通過命令“ssh-copy-id-i~/.ssh/id_rsa.pubxuluhui@slave2”復制給slave2,然后測試是否可以通過“ssh”命令免密登錄slave2。為了使主節(jié)點master能通過“ssh”命令免密登錄自身,使用“sshmaster”命令嘗試登錄自身,第1次連接時需要人工干預輸入“yes”,然后會自動將master的key加入/home/xuluhui/.ssh/know_hosts文件中,此時即可登錄到自身。第2次執(zhí)行命令“sshmaster”時就可以免密登錄到自身。至此,可以從master節(jié)點通過“ssh”命令免密登錄到自身、slave1和slave2了,這對Hadoop已經(jīng)足夠,但是若想達到所有節(jié)點之間都能免密登錄的話,還需要在slave1、slave2上各執(zhí)行3次,也就是說兩兩共享密鑰,這樣累計共執(zhí)行9次。1.5.4獲取和安裝Hadoop以下步驟需要在master、slave1和slave2三個節(jié)點上均要完成。1.獲取HadoopHadoop官方下載地址為/releases.html,本書選用的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下,具體命令如下所示。[xuluhui@master~]$suroot[root@master~]#cd/usr/local[root@masterlocal]#tar-zxvf/home/xuluhui/Downloads/hadoop-2.9.2.tar.gz(2)將Hadoop安裝目錄的權限賦給xuluhui用戶,輸入以下命令。[root@masterlocal]#chown-Rxuluhui/usr/local/hadoop-.5配置全分布模式Hadoop集群需要說明的是,為了方便,下文中步驟1-9均在主節(jié)點master上進行,從節(jié)點slave1、slave2上的配置文件可以通過“scp”命令同步復制。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”重新加載配置文件或者重啟機器,使之生效當前系統(tǒng)變量“PATH”值如圖1-13所示。圖1-13使用source命令重新加載配置文件hadoop.sh此步驟可省略,之所以將Hadoop安裝目錄下bin和sbin加入到系統(tǒng)環(huán)境變量PATH中,是因為當輸入啟動和管理Hadoop集群命令時,無需再切換到Hadoop安裝目錄下的bin目錄或者sbin目錄,否則會出現(xiàn)錯誤信息“bash:****:commandnotfound...”。由于上文已將Hadoop安裝目錄的權限賦給xuluhui用戶,所以接下來的2-9步驟均在普通用戶xuluhui下完成。2.配置hadoop-env.sh環(huán)境變量配置文件hadoop-env.sh主要配置Java的安裝路徑JAVA_HOME、Hadoop日志存儲路徑HADOOP_LOG_DIR及添加SSH的配置選項HADOOP_SSH_OPTS等。本書中關于hadoop-env.sh配置文件的修改具體如下。(1)第25行“exportJAVA_HOME=${JAVA_HOME}”修改為:exportJAVA_HOME=/usr/java/jdk1.8.0_191(2)第26行空行處加入:exportHADOOP_SSH_OPTS='-oStrictHostKeyChecking=no'這里要說明的是,SSH的選項“StrictHostKeyChecking”用于控制當目標主機尚未進行過認證時,是否顯示信息“Areyousureyouwanttocontinueconnecting(yes/no)?”。所以當?shù)卿浧渌鼨C器時,只需要設置參數(shù)“HADOOP_SSH_OPTS”的值為“-oStrictHostKeyChecking=no”就可以直接登錄,不會有上面的提示信息,不需要人工干預輸入“yes”,而且還會將目標主機key加到~/.ssh/known_hosts文件里。(3)第113行“exportHADOOP_PID_DIR=${HADOOP_PID_DIR}”指定HDFS守護進程號的保存位置,默認為“/tmp”,由于該文件夾用以存放臨時文件,系統(tǒng)定時會自動清理,因此本書將“HADOOP_PID_DIR”設置為Hadoop安裝目錄下的目錄pids,如下所示,其中目錄pids會隨著HDFS守護進程的啟動而由系統(tǒng)自動創(chuàng)建,無需用戶手工創(chuàng)建。exportHADOOP_PID_DIR=${HADOOP_HOME}/pids3.配置mapred-env.sh環(huán)境變量配置文件mapred-env.sh主要配置Java安裝路徑JAVA_HOME、MapReduce日志存儲路徑HADOOP_MAPRED_LOG_DIR等,之所以再次設置JAVA_HOME,是為了保證所有進程使用的是同一個版本的JDK。本書中關于mapred-env.sh配置文件的修改具體如下。(1)第16行注釋“#exportJAVA_HOME=/home/y/libexec/jdk1.6.0/”修改為:exportJAVA_HOME=/usr/java/jdk1.8.0_191(2)第28行指定MapReduce守護進程號的保存位置,默認為“/tmp”,同以上“HADOOP_PID_DIR”,此處注釋“#exportHADOOP_MAPRED_PID_DIR=”修改為Hadoop安裝目錄下的目錄pids,如下所示,其中目錄pids會隨著MapReduce守護進程的啟動而由系統(tǒng)自動創(chuàng)建,無需用戶手工創(chuàng)建。exportHADOOP_MAPRED_PID_DIR=${HADOOP_HOME}/pids4.配置yarn-env.shYARN是Hadoop的資源管理器,環(huán)境變量配置文件yarn-env.sh主要配置Java安裝路徑JAVA_HOME及YARN日志存放路徑YARN_LOG_DIR等。本書中關于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配置項,用于指定YARN守護進程號的保存位置,在該文件最后添加一行,內(nèi)容如下所示,其中目錄pids會隨著YARN守護進程的啟動而由系統(tǒng)自動創(chuàng)建,無需用戶手工創(chuàng)建。exportYARN_PID_DIR=${HADOOP_HOME}/pids5.配置core-site.xmlcore-site.xml是hadoopcore配置文件,如HDFS和MapReduce常用的I/O設置等,其中包括很多配置項,但實際上,大多數(shù)配置項都有默認項,也就是說,很多配置項即使不配置,也無關緊要,只是在特定場合下,有些默認值無法工作,這時再找出來配置特定值。關于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中幾個重要配置項的參數(shù)名、功能、默認值和設置值如表1-4所示。表1-4core-site.xml重要配置項參數(shù)說明配置項參數(shù)名功能默認值設置值fs.defaultFSHDFS的文件URIfile:///hdfs://30:9000io.file.buffer.sizeIO文件的緩沖區(qū)大小4096131072hadoop.tmp.dirHadoop的臨時目錄/tmp/hadoop-${}/usr/local/hadoop-2.9.2/hdfsdata關于core-site.xml更多配置項的說明,讀者請參考本地幫助文檔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分項數(shù)據(jù),如字空間元數(shù)據(jù)、數(shù)據(jù)塊、輔助節(jié)點的檢查點的存放路徑等,不修改配置項的采用默認值即可,本書中關于hdfs-site.xml配置文件未做任何修改。hdfs-site.xml中幾個重要配置項的參數(shù)名、功能、默認值和設置值如表1-5所示。表1-5hdfs-site.xml重要配置項參數(shù)說明配置項參數(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é)點的檢查點存放位置file://${hadoop.tmp.dir}/dfs/namesecondary未修改dfs.blocksizeHDFS文件塊大小134217728未修改dfs.replicationHDFS文件塊副本數(shù)3未修改node.http-addressNameNodeWebUI地址和端口:50070未修改由于上一步對core-site.xml的修改中將Hadoop的臨時目錄設置為“/usr/local/hadoop-2.9.2/hdfsdata”,故本書中將元數(shù)據(jù)存放在主節(jié)點的“/usr/local/hadoop-2.9.2/hdfsdata/dfs/name”,數(shù)據(jù)塊存放在從節(jié)點的“/usr/local/hadoop-2.9.2/hdfsdata/dfs/data”,輔助節(jié)點的檢查點存放在主節(jié)點的“/usr/local/hadoop-2.9.2/hdfsdata/dfs/namesecondary”,這些目錄都會隨著HDFS的格式化、HDFS守護進程的啟動而由系統(tǒng)自動創(chuàng)建,無需用戶手工創(chuàng)建。關于hdfs-site.xml更多配置項的說明,讀者請參考本地幫助文檔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配置文件是有關MapReduce計算框架的配置信息,Hadoop配置文件中沒有mapred-site.xml,但有mapred-site.xml.template,讀者使用命令例如“cpmapred-site.xml.templatemapred-site.xml”將其復制并重命名為“mapred-site.xml”即可,然后用vim編輯相應的配置信息,本書中對于mapred-site.xml的添加內(nèi)容如下所示。<configuration><property><name></name><value>yarn</value></property></configuration>mapred-site.xml中幾個重要配置項的參數(shù)名、功能、默認值和設置值如表1-6所示。表1-6mapred-site.xml重要配置項參數(shù)說明配置項參數(shù)名功能默認值設置值MapReduce應用程序的執(zhí)行框架localyarnmapreduce.jobhistory.webapp.addressMapReduceWebUI端口號19888未修改mapreduce.job.maps每個MapReduce作業(yè)的map任務數(shù)目2未修改mapreduce.job.reduces每個MapReduce作業(yè)的reduce任務數(shù)目1未修改關于mapred-site.xml更多配置項的說明,讀者請參考本地幫助文檔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是有關資源管理器的YARN配置信息,本書中對于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中幾個重要配置項的參數(shù)名、功能、默認值和設置值如表1-7所示。表1-7yarn-site.xml重要配置項參數(shù)說明配置項參數(shù)名功能默認值設置值yarn.resourcemanager.hostname提供ResourceManager服務的主機名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中間結果存放位置${hadoop.tmp.dir}/nm-local-dir未修改yarn.nodemanager.aux-servicesNodeManager上運行的附屬服務mapreduce_shuffle由于之前步驟已將core-site.xml中Hadoop的臨時目錄設置為“/usr/local/hadoop-2.9.2/hdfsdata”,故本書中未修改配置項“yarn.nodemanager.local-dirs”,中間結果的存放位置為“/usr/local/hadoop-2.9.2/hdfsdata/nm-local-dir”,這個目錄會隨著YARN守護進程的啟動而在由系統(tǒng)自動在所有從節(jié)點上創(chuàng)建,無需用戶手工創(chuàng)建。另外,“yarn.nodemanager.aux-services”需配置成“mapreduce_shuffle”,才可運行MapReduce程序。關于yarn-site.xml更多配置項的說明,讀者請參考本地幫助文檔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é)點主機名列表,在這個文件中,需要添加所有的從節(jié)點主機名,每一個主機名占一行,本書中slaves文件的內(nèi)容如下所示。slave1slave2需要注意的是,在slaves文件里,有一個默認值“l(fā)ocalhost”,一定要刪除,若不刪除,雖然后面添加了所有的從節(jié)點主機名,Hadoop還是無法逃脫“偽分布模式”的命運。10.同步配置文件以上配置文件要求Hadoop集群中每個節(jié)點都“機手一份”,快捷的方法是在主節(jié)點master上配置好,然后利用“scp”命令將配置好的文件同步到從節(jié)點slave1、slave2上。scp是securecopy的縮寫,該命令用于在Linux下進行遠程文件的拷貝,該命令用于在Linux系統(tǒng)進行遠程文件的拷貝,可以在Linux服務器之間復制文件和目錄。(1)同步hadoop.sh切換到root用戶下,將master節(jié)點上的文件hadoop.sh同步到其他2臺從節(jié)點上,命令如下所示。[root@masterhadoop]#scp/etc/profile.d/hadoop.shroot@slave1:/etc/profile.d/[root@masterhadoop]#scp/etc/profile.d/hadoop.shroot@slave2:/etc/profile.d/(2)同步Hadoop配置文件切換到普通用戶xuluhui下,將master上/usr/local/hadoop-2.9.2/etc/hadoop下的配置文件同步到其他2個從節(jié)點上。首先,通過如下命令將主節(jié)點master上的Hadoop配置文件同步到從節(jié)點slave1上,具體執(zhí)行效果如圖1-14所示。[xuluhui@masterhadoop]$scp-r/usr/local/hadoop-2.9.2/etc/hadoop/*xuluhui@slave1:/usr/local/hadoop-2.9.2/etc/hadoop/圖1-14同步Hadoop配置文件到從節(jié)點slave1其次,通過相同方法將主節(jié)點master上的Hadoop配置文件同步到從節(jié)點slave2上,具體命令如下所示,此處略去執(zhí)行效果的圖片。[xuluhui@masterhadoop]$scp-r/usr/local/hadoop-2.9.2/etc/hadoop/*xuluhui@slave2:/usr/local/hadoop-2.9.2/etc/hadoop/至此,1主節(jié)點2從節(jié)點的Hadoop全分布模式集群全部配置結束,重啟三臺機器,使得上述配置生效。1.5.6關閉防火墻為了方便Hadoop集群間相互通信,建議關閉防火墻,若防火墻沒有關閉,可能會導致Hadoop雖然可以啟動,但是數(shù)據(jù)節(jié)點DataNode無法連接名稱節(jié)點NameNode,如圖1-15所示,Hadoop集群啟動正常,但數(shù)據(jù)容量為0B,數(shù)據(jù)節(jié)點數(shù)量也是0。圖1-15未關閉防火墻時Hadoop集群的數(shù)據(jù)容量和數(shù)據(jù)節(jié)點數(shù)量均為0CentOS7下關閉防火墻的方式有兩種:命令“systemctlstopfirewalld.service”用于臨時關閉防火墻,重啟機器后又會恢復到默認狀態(tài);命令“systemctldisablefirewalld.service”用于永久關閉防火墻。編者采用在master節(jié)點上以root身份使用第2個命令,具體效果如圖1-16所示。圖1-16關閉防火墻重啟機器,使用命令“systemctlstatusfirewalld.service”查看防火墻狀態(tài),如圖1-17所示,防火墻狀態(tài)為“inactive(dead)”。圖1-17命令“systemctldisablefirewalld.service”關閉防火墻后再重啟機器后的效果同理,關閉所有從節(jié)點slave1、slave2的防火墻。1.5.7格式化文件系統(tǒng)在主節(jié)點master上以普通用戶xuluhui身份輸入以下命令,進行HDFS文件系統(tǒng)的格式化。注意,此命令必須在主節(jié)點master上執(zhí)行,切勿在從節(jié)點上執(zhí)行。[xuluhui@master~]$hdfsnamenode-format值得注意的是,HDFS格式化命令執(zhí)行成功后,按照本書以上Hadoop配置,會在主節(jié)點master的Hadoop安裝目錄下自動生成hdfsdata/dfs/name這個HDFS元數(shù)據(jù)目錄,如圖1-18所示。此時,2個從節(jié)點上Hadoop安裝目錄下的文件不發(fā)生變化。圖1-18格式化HDFS后主節(jié)點上自動生成的目錄及文件1.5.8啟動和驗證Hadoop啟動全分布模式Hadoop集群的守護進程,只需在主節(jié)點master上依次執(zhí)行以下3條命令即可。start-dfs.shstart-yarn.shmr-jobhistory-daemon.shstarthistoryserver“start-dfs.sh”命令會在節(jié)點上啟動NameNode、DataNode和SecondaryNameNode服務?!皊tart-yarn.sh”命令會在節(jié)點上啟動ResourceManager和NodeManager服務?!癿r-jobhistory-daemon.shstarthistoryserver”命令會在節(jié)點上啟動JobHistoryServer服務。請注意,即使對應的守護進程沒有啟動成功,Hadoop也不會在控制臺顯示錯誤消息,讀者可以利用“jps”命令一步一步查詢,逐步核實對應的進程是否啟動成功。1.執(zhí)行命令start-dfs.sh若全分布模式Hadoop集群部署成功,執(zhí)行命令start-dfs.sh后,NameNode和SecondaryNameNode會出現(xiàn)在主節(jié)點master上,DataNode會出現(xiàn)在所有從節(jié)點slave1、slave2上,運行結果如圖1-19所示。這里需要注意的是,第一次啟動HDFS集群時,由于之前步驟中在配置文件hadoop-env.sh中添加了一行“HADOOP_SSH_OPTS='-oStrictHostKeyChecking=no'”,所以在連接主機
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年精密沖頭項目可行性研究報告
- 2025年生日帽項目可行性研究報告
- 2025年一次性使用吸痰管項目可行性研究報告
- 2025至2030年負離子涂料項目投資價值分析報告
- 2025至2030年中國花螺紋煲數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國美紋紙膠帶數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國奶油梅數(shù)據(jù)監(jiān)測研究報告
- 衛(wèi)生間防水工程合同
- 游泳池清潔裝修合同模板
- 個人出租店面合同范本
- 中央2025年交通運輸部所屬事業(yè)單位招聘261人筆試歷年參考題庫附帶答案詳解
- 2025年上半年上半年重慶三峽融資擔保集團股份限公司招聘6人易考易錯模擬試題(共500題)試卷后附參考答案
- 特殊教育學校2024-2025學年度第二學期教學工作計劃
- 2025年技術員個人工作計劃例文(四篇)
- 勞保穿戴要求培訓
- 2024年物聯(lián)網(wǎng)安裝調(diào)試員(初級工)職業(yè)資格鑒定考試題庫(含答案)
- 工業(yè)控制系統(tǒng)應用與安全防護技術(微課版)課件 第1章 緒論
- 《設備科安全培訓》課件
- 藍色插畫風徽州印象旅游景點景區(qū)文化宣傳
- 2024年形勢與政策課件及講稿合集
- 無人機運營方案
評論
0/150
提交評論