大數(shù)據(jù)技術(shù)實(shí)戰(zhàn)案例教程實(shí)驗(yàn)實(shí)驗(yàn)指導(dǎo)書 實(shí)驗(yàn)1、2 部署全分布模式Hadoop集群、HDFS實(shí)戰(zhàn)_第1頁
大數(shù)據(jù)技術(shù)實(shí)戰(zhàn)案例教程實(shí)驗(yàn)實(shí)驗(yàn)指導(dǎo)書 實(shí)驗(yàn)1、2 部署全分布模式Hadoop集群、HDFS實(shí)戰(zhàn)_第2頁
大數(shù)據(jù)技術(shù)實(shí)戰(zhàn)案例教程實(shí)驗(yàn)實(shí)驗(yàn)指導(dǎo)書 實(shí)驗(yàn)1、2 部署全分布模式Hadoop集群、HDFS實(shí)戰(zhàn)_第3頁
大數(shù)據(jù)技術(shù)實(shí)戰(zhàn)案例教程實(shí)驗(yàn)實(shí)驗(yàn)指導(dǎo)書 實(shí)驗(yàn)1、2 部署全分布模式Hadoop集群、HDFS實(shí)戰(zhàn)_第4頁
大數(shù)據(jù)技術(shù)實(shí)戰(zhàn)案例教程實(shí)驗(yàn)實(shí)驗(yàn)指導(dǎo)書 實(shí)驗(yàn)1、2 部署全分布模式Hadoop集群、HDFS實(shí)戰(zhàn)_第5頁
已閱讀5頁,還剩61頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

實(shí)驗(yàn)1部署全分布模式Hadoop集群

1.1實(shí)驗(yàn)?zāi)康?/p>

1.熟練掌握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集群。

1.2實(shí)驗(yàn)環(huán)境

本實(shí)驗(yàn)所需的軟硬件環(huán)境包括PC、VMwareWorkstationPro、CentOS安裝包、Oracle

JDK安裝包、Hadoop安裝包。

1.3實(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.啟動和驗(yàn)證Hadoop。

9.關(guān)閉Hadoop?

1.4實(shí)驗(yàn)原理

1.4.1Linux基本命令

Linux是一套免費(fèi)使用和自由傳播的類Unix操作系統(tǒng),是一個基于POSIX和UNIX的

多用戶、多任務(wù)、支持多線程和多CPU的操作系統(tǒng)。它能運(yùn)行主要的UNIX工具軟件、應(yīng)

用程序和網(wǎng)絡(luò)協(xié)議,它支持32位和64位硬件。Linux繼承了Unix以網(wǎng)絡(luò)為核心的設(shè)計(jì)思

想,是一個性能穩(wěn)定的多用戶網(wǎng)絡(luò)操作系統(tǒng)。

Linux操作系統(tǒng)誕生于1991年10月5日。Linux存在著許多不同的版本,但它們都使

用了Linux內(nèi)核。Linux可安裝在各種計(jì)算機(jī)硬件設(shè)備中,比如手機(jī)、平板電腦、路由器、

視頻游戲控制臺、臺式計(jì)算機(jī)、大型機(jī)和超級計(jì)算機(jī)。

嚴(yán)格來講,Linux這個詞本身只表示Linux內(nèi)核,但實(shí)際上人們已經(jīng)習(xí)慣用Linux來形

容整個基于Linux內(nèi)核且使用GNU工程各種工具和數(shù)據(jù)庫的操作系統(tǒng)。

此處將介紹實(shí)驗(yàn)中涉及到的一些Linux操作系統(tǒng)的基本命令。

1)查看當(dāng)前目錄

pwd命令用于顯示當(dāng)前目錄,效果如下所示。

[xuluhui@localhost~]$pwd

/home/xuluhui

2)切換目錄

cd命令用來切換目錄,效果如下所示。

[xuluhui@localhost~]$cd/usr/local

[xuluhui@localhostlocal]$pwd

/usr/local

3)羅列文件

Is命令用于查看文件與目錄,效果如下所示。

[xuluhui@localhost~]$Is

DesktopDocumentsDownloadsMusicPicturesPublicTemplatesVideos

4)創(chuàng)建目錄

mkdir命令用于創(chuàng)建目錄,效果如下所示。

[xuluhui@localhost~]$mkdirTestData

[xuluhui@localhost~]$Is

DesktopDownloadsPicturesTemplatesVideos

DocumentsMusicPublicTestData

5)拷貝文件或目錄

cp命令用于拷貝文件,若拷貝的對象為目錄,則需要使用-r參數(shù),效果如下所示。

[xuluhui@localhost~]$cp-rTestDataTestData2

[xuluhui@localhost~]$Is

DesktopDownloadsPicturesTemplates7estData2

DocumentsMusicPublicTestDataVideos

6)移動或重命名文件或目錄

mv命令用于移動文件,在實(shí)際使用中,也常用于重命名文件或目錄,效果如下所示。

[xuluhui@localhost~]$mvTestData2TestDataxlh

[xuluhui@localhost~]$Is

DesktopDownloadsPicturesTemplatesTestDataxlh

DocumentsMusicPublicTestDataVideos

7)刪除文件或目錄

rm命令用于刪除文件,若刪除的對象為目錄,則需要使用-r參數(shù),效果如下所示。

[xuluhui@localhost~]$rm-rfTestDataxlh

[xuluhui@localhost~]$Is

DesktopDownloadsPicturesTemplatesVideos

DocumentsMusicPublicTestData

8)查看進(jìn)程

ps命令用于顯示當(dāng)前運(yùn)行中進(jìn)程的相關(guān)信息,效果如下所示。

[xuluhui@localhost~]$ps

PIDTTYTIMECMD

69780pts/000:00:00bash

71680pts/000:00:00ps

9)壓縮與解壓文件

tar命令用于文件壓縮與解壓,參數(shù)中的c表示壓縮,x表示解壓縮,效果如下所示。

[root@localhostlocal]#tar-zxvf/home/xuluhui/Downloads/hadoop-2.9.2.tar.gz

10)查看文件內(nèi)容

cat命令用于查看文件內(nèi)容,效果如下所示。

[xuluhui@localhostcat/usr/local/hadoop-2.9.2/etc/hadoop/core-site.xml

11)查看機(jī)器IP配置

ipaddress命令用于查看機(jī)器IP配置,效果如下所示。

[xuluhui@localhost~]$ipaddress

1:Io:<LOOPBACK/UP,LOWER_UP>mtu65536qdiscnoqueuestateUNKNOWNgroupdefaultqlen

1000

link/loopback00:00:00:00:00:00brd00:00:00:00:00:00

inet/8scopehostIo

validjftforeverpreferred_lftforever

inet6::1/128scopehost

validjftforeverpreferred_lftforever

2:ens33:<BROADCAS[MULTICAST,UP,LOWER_UP>mtu1500qdiscpfifojaststateUPgroup

defaultqlen1000

link/ether00:0c:29:6d:5d:c9brd

inet28/24brd55scopeglobalnoprefixroutedynamicens33

validjft1795secpreferred_lft1795sec

inet6fe80::6bb8:6e80:d029:10f2/64scopelinknoprefixroute

validjftforeverpreferred_lftforever

3:virbrO:<NO-CARRIERZBROADCASTMULTICAS1;UP>mtu1500qdiscnoqueuestateDOWNgroup

defaultqlen1000

link/ether52:54:00:0b:74:lbbrd

inet/24brd55scopeglobalvirbrO

validjftforeverpreferredjftforever

4:virbrO-nic:<BROADCAST,MULTICAST>mtu1500qdiscpfifo__fastmastervirbrOstateDOWN

groupdefaultqlen1000

link/ether52:54:00:0b:74:lbbrd

ifconfig命令也可用于查看機(jī)器IP配置,效果如下所示。

[xuluhui@localhostifconfig

ens33:flags=4163<UP,BROADCASTRUNNING,MULTICAST〉mtu1500

inet28netmaskbroadcast55

inet6fe80::6bb8:6e80:d029:10f2prefixlen64scopeid0x20<link>

ether00:0c:29:6d:5d:c9txqueuelen1000(Ethernet)

RXpackets11319bytes732632(715.4KiB)

RXerrors0dropped0overruns0frame0

TXpackets492bytes51674(50.4KiB)

TXerrors0dropped0overruns0carrier0collisions0

lo:flags=73<UPzLOOPBACK,RUNNING>mtu65536

inetnetmask

inet6::1prefixlen128scopeidOxlO<host>

looptxqueuelen1000(LocalLoopback)

RXpackets2228bytes193268(188.7KiB)

RXerrors0dropped0overruns0frame0

TXpackets2228bytes193268(188.7KiB)

TXerrors0dropped0overruns0carrier0collisions0

virbrO:flags=4099<UP,BROADCASI;MULTICAST>mtu1500

inetnetmaskbroadcast55

ether52:54:00:0b:74:lbtxqueuelen1000(Ethernet)

RXpackets0bytes0(0.0B)

RXerrors0dropped0overruns0frame0

TXpackets0bytes0(0.0B)

TXerrors0dropped0overruns0carrier0collisions0

1.4.2vim編輯器

vim是一個類似于vi的著名的功能強(qiáng)大、高度可定制的文本編輯器,在vi的基礎(chǔ)上改

進(jìn)和增加了很多特性,vim是vi的加強(qiáng)版,比vi更容易使用,vi的命令幾乎全部都可以在

vim上使用。

vi/vim共分為三種工作模式:命令模式(Commandmode)、輸入模式(Insertmode)和

末行模式(Lastlinemode)。用戶剛剛啟動vi/vim,便進(jìn)入了命令模式,此狀態(tài)下敲擊鍵盤

動作會被vim識別為命令,而非輸入字符,命令模式下是常用的幾個命令包括:“i”切換到

輸入模式,以輸入字符;“x”刪除當(dāng)前光標(biāo)所在處的字符;“:"切換到末行模式,以在最底

端一行輸入命令。在命令模式下按下“i”就進(jìn)入了輸入模式,在輸入模式中,可以使用若干

按鍵完成相應(yīng)任務(wù),例如字符按鍵以及Shift組合,輸入字符;Insert按鍵切換光標(biāo)為輸入/

替換模式,光標(biāo)將變成豎線/下劃線;ESC按鍵退出輸入模式,切換到命令模式等。在命令

模式下按下“:"(英文冒號)就進(jìn)入末行模式,末行模式下可以輸入單個或多個字符的命令,

可用的命令非常多,例“q”可以退出程序,“w”用于保存文件等,按ESC鍵可隨時退出末

行模式。vi/vim三種工作模式的轉(zhuǎn)換如圖1-1所示。

圖1-1vi/vim三種工作模式

vim是實(shí)驗(yàn)中用到最多的文件編輯命令。在命令行輸入“vim文件名”后,默認(rèn)進(jìn)入“命

令模式”,不可編輯文檔,需按“i”鍵,方可編輯文檔,編輯結(jié)束后,需按“ESC”鍵,先

退回命令模式,再按進(jìn)入末行模式,接著輸入“wq”方可保存退出。

1.4.3Java基本命令

在安裝和配置Java后,可以使用Java命令來編譯、運(yùn)行或者打包Java程序。

1)查看Java版本

[root@localhostjava-version

javaversion"1.8.0_191H

Java(TM)SERuntimeEnvironment(build1.8.0_191-bl2)

JavaHotSpot(TM)64-BitServerVM(build25.191-bl2,mixedmode)

2)查看當(dāng)前所有Java進(jìn)程

jps(JavaVirtualMachineProcessStatusTool)是Java提供的一個顯示當(dāng)前所有Java進(jìn)

程pid的命令,適合在linux/unix平臺上簡單察看當(dāng)前Java進(jìn)程的一些簡單情況,如下所示。

[root@localhost~]$jps

11973Jps

3)編譯Java程序

[root@localhost~]#javacHelloWorld.java

4)運(yùn)行Java程序

[root@localhost"/]#javaHelioWorld

WelcometoJava.

5)打包Java程序

[root@localhostjar-cvfHelloWorld.jarHelloWorld.class

addedmanifest

adding:HelloWorld.class(in=430)(out=295)(deflated31%)

由于打包時并沒有指定manifest文件,因此該jar包無法直接運(yùn)行,如下所示。

[root@localhost~]#java-jarHelloWorld.jar

nomainmanifestattribute,inHelloWorld.jar

6)打包攜帶manifest文件的Java程序

manifest.mf文件用于描述整個Java項(xiàng)目,最常用的功能是指定項(xiàng)目的入口類,新建文

件“manifest.mf",文件內(nèi)容輸入aMain-Class:HelloWorld

[root@localhostvimmanifest.mf

打包時,加入-m參數(shù),并指定manifest文件名。

[root@localhostjar-cvfmHelloWorld.jarmanifest.mfHelloWorld.class

addedmanifest

adding:HelloWorld.class(in=430)(out=295)(deflated31%)

7)運(yùn)行jar包

可使用“java”命令直接運(yùn)行jar包。

[root@localhost~]#java-jarHelloWorld.jar

WelcometoJava.

1.4.4SSH安全通信協(xié)議

對于遠(yuǎn)程管理其它機(jī)器,一般使用遠(yuǎn)程桌面或者telnet。Linux安裝時自帶了telnet,但

是telnet的缺點(diǎn)是通信不加密,存在不安全因素,只適合內(nèi)網(wǎng)訪問。為解決這個問題,推出

了安全通信協(xié)議即SSH(SecureShell),通過SSH可以安全地進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)傳輸,這得益于

SSH采用的是非對稱加密體系,傳輸內(nèi)容使用RSA或者DSA加密,可以避免網(wǎng)絡(luò)竊聽。

非對稱加密的工作流程包括以下幾個步驟:服務(wù)端接受到遠(yuǎn)程客戶端登陸請求,將自己

的公鑰發(fā)送給客戶端;客戶端利用這個公鑰對數(shù)據(jù)進(jìn)行加密;客戶端將加密的信息發(fā)送給服

務(wù)端;服務(wù)端利用自己的私鑰進(jìn)行解密,驗(yàn)證其合法性;驗(yàn)證結(jié)果返回客戶端響應(yīng)。

不過需要注意的是,Hadoop并不是通過SSH協(xié)議進(jìn)行數(shù)據(jù)傳輸?shù)?,而是Hadoop控制

腳本需要依賴SSH來執(zhí)行針對整個集群的操作。Hadoop在啟動和停止HDFS、YARN的時

候,需要主節(jié)點(diǎn)上的進(jìn)程通過SSH協(xié)議啟動或停止從節(jié)點(diǎn)上的各種守護(hù)進(jìn)程。也就是說如

果不配置SSH免密登錄對Hadoop的使用沒有任何影響,只需在啟動和停止Hadoop時輸入

每個從節(jié)點(diǎn)的用戶名和密碼即可。試想,若管理成百上千個節(jié)點(diǎn)組成的Hadoop集群,連接

每個從節(jié)點(diǎn)時都輸入密碼將是一項(xiàng)繁雜的工作。因此,配置Hadoop主節(jié)點(diǎn)到各個從節(jié)點(diǎn)的

SSH免密登錄是有需要的。

1.4.5Hadoop

Hadoop是Apache開源組織提供的一個分布式存儲和計(jì)算的軟件框架,它具有高可用、

彈性可擴(kuò)展的特點(diǎn),非常適合處理海量數(shù)據(jù)。

Hadoop由ApacheLucence創(chuàng)始人道格?卡丁創(chuàng)建,Lucence是一個應(yīng)用廣泛的文本搜索

系統(tǒng)庫。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)用性能方面

的各種問題,提出了第二代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ù)場景的數(shù)

據(jù)存儲,提供了高可靠、高擴(kuò)展、高吞吐率的數(shù)據(jù)存儲服務(wù)。M叩Reduce是谷歌MapReduce

的開源實(shí)現(xiàn),是一種簡化的分布式應(yīng)用程序開發(fā)的編程模型,允許開發(fā)人員在不了解分布式

系統(tǒng)底層細(xì)節(jié)和缺少并行應(yīng)用開發(fā)經(jīng)驗(yàn)的情況下,能快速輕松地編寫出分布式并行程序,將

其運(yùn)行于計(jì)算機(jī)集群上,完成對大規(guī)模數(shù)據(jù)集的存儲和計(jì)算。YARN是將M叩Reduce1.0中

JobTracker的資源管理功能單獨(dú)剝離出來而形成,它是一個純粹的資源管理和調(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、Horlonworks>MapR等推出的Hadoop商業(yè)版。截止到目前,

ApacheHadoop版本分為三代,分別稱為Hadoop1.0、Hadoop2.0、Hadoop3.0?Hadoop商

業(yè)版主要是提供對各項(xiàng)服務(wù)的支持,高級功能要收取一定費(fèi)用,這對一些研發(fā)能力不太強(qiáng)的

企業(yè)來說是非常有利的,公司只要出一定的費(fèi)用就能使用到一些高級功能,每個發(fā)行版都有

自己的特點(diǎn),目前使用最多的是ClouderaDistributionHadoop(CDH)和HortonworksData

Platform(HDP)?

請讀者注意,若無特別強(qiáng)調(diào),本書均是圍繞ApacheHadoop2.0展開描述和實(shí)驗(yàn)的。

2.Hadoop運(yùn)行環(huán)境

對于大部分Java開源產(chǎn)品而言,在部署與運(yùn)行之前,總是需要搭建一個合適的環(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)行平臺支持以下兩種:

(1)Windows:Hadoop支持Windows,但由于Windows操作系統(tǒng)本身不太適合作為服

務(wù)器操作系統(tǒng),所以編者不介紹Windows下安裝和配置Hadoop,讀者可自行參考網(wǎng)址

/hadoop/Hadoop2OnWindowso

(2)GNU/Linux:Hadoop的最佳運(yùn)行環(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語言編寫,因此它的運(yùn)行環(huán)境需要Java環(huán)境的支持。Hadoop3.x需要

Java8,Hadoop2.7及以后版本需要Java7或Java8,Hadoop2.6及早期版本需要Java6。本

書采用的Java為OracleJDK1.8。

3)SSH

Hadoop集群若想運(yùn)行,其運(yùn)行平臺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):只在一■臺計(jì)算機(jī)上運(yùn)行,不需任何配置,在

這種模式下,Hadoop所有的守護(hù)進(jìn)程都變成了一個Java進(jìn)程,存儲采用本地文件系統(tǒng),沒

有采用分布式文件系統(tǒng)HDFS,

(2)偽分布模式(Pseudo-DistributedMode):只在一臺計(jì)算機(jī)上運(yùn)行,在這種模式下,

Hadoop所有守護(hù)進(jìn)程都運(yùn)行在一個節(jié)點(diǎn)上,在一個節(jié)點(diǎn)上模擬了一個具有Hadoop完整功

能的微型集群,存儲采用分布式文件系統(tǒng)HDFS,但是HDFS的名稱節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn)都位于

同一臺計(jì)算機(jī)上。

(3)全分布模式(Fully-DistributedMode):在多臺計(jì)算機(jī)上運(yùn)行,在這種模式下,Hadoop

的守護(hù)進(jìn)程運(yùn)行在多個節(jié)點(diǎn)上,形成一個真正意義上的集群,存儲采用分布式文件系統(tǒng)

HDFS,且HDFS的名稱節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn)位于不同計(jì)算機(jī)上。

三種運(yùn)行模式各有優(yōu)缺點(diǎn)。單機(jī)模式配置最簡單,但它與用戶交互的方式不同于全分布

模式;對于節(jié)點(diǎn)數(shù)目受限的初學(xué)者可以采用偽分布模式,雖然只有一個節(jié)點(diǎn)支撐整個Hadoop

集群,但是Hadoop在偽分布模式下的操作方式與在全分布模式下的操作幾乎完全相同;全

分布模式是使用Hadoop的最佳方式,真實(shí)Hadoop集群的運(yùn)行均采用該模式,但它需要最

多的配置工作和架構(gòu)所需要的機(jī)器集群。

4.Hadoop2.0生態(tài)系統(tǒng)

經(jīng)過十幾年的發(fā)展,目前,Hadoop已經(jīng)成長為一個龐大的體系。狹義上來說,Hadoop

是一個適合大數(shù)據(jù)的分布式存儲和分布式計(jì)算的平臺,Hadoop2。主要由三部分構(gòu)成:分布

式文件系統(tǒng)HDFS、統(tǒng)一資源管理和調(diào)度框架YARN、分布式計(jì)算框架MapReduce;但廣義

上來講,Hadoop是指以Hadoop為基礎(chǔ)的生態(tài)系統(tǒng),是一個龐大體系,Hadoop僅是其中最

基礎(chǔ)、最重要的部分,生態(tài)系統(tǒng)中每個子系統(tǒng)只負(fù)責(zé)解決某一特定問題。

Hadoop2.0生態(tài)系統(tǒng)如圖1?2所示。

Ambari

K

fa

ak

oZ

oF

Kc

em

epe

rHDFS

Common

圖i-2Hadoop2.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-3所示。

NameNode

圖1-3Hadoop2.0集群架構(gòu)

6.Hadoop配置文件

Hadoop配置文件很多,配置文件位于$HADOOP_HOME/elc/hadoop,關(guān)鍵的幾個配置文

件如表1-1所示,偽分布模式和全分布模式下的Hadoop集群所需修改的配置文件有差異。

表1-1Hadoop主要配置文件

文件名稱格式描述

hadoop-env.shBash腳本記錄運(yùn)行Hadoop要用的環(huán)境變量

記錄運(yùn)行YARN要用的環(huán)境變量(覆蓋hadoop-env.sh中

yam-env.shBash腳本

設(shè)置的變量)

記錄運(yùn)行MapReduce要用的環(huán)境變量覆蓋hadoop-env.sh

mapred-env.shBash腳本

中設(shè)置的變量)

HadoopCore的配置項(xiàng),包括HDFS,MapReduce和YARN

core-site,xmlHadoop配置XML

常用的I/O設(shè)置等

HDFS守護(hù)進(jìn)程的配置項(xiàng),包括NameNode、

hdfs-site.xmlHadoop配置XML

SecondaryNameNodeDataNode等

YARN守護(hù)進(jìn)程的配置項(xiàng),包括ResourceManager>

yarn-site,xmlHadoop配置XML

NodeManager等

mapred-site.xmlHadoop配置XMLMapReduce守護(hù)進(jìn)程的配置項(xiàng),包括JobHistoryServer

運(yùn)行DataNode和NodeManager的從節(jié)點(diǎn)機(jī)器列表,每行

slaves純文本

1個主機(jī)名

讀者可以在Hadoop共享文檔目錄下找到一個導(dǎo)航文件

$HADOOP_HOME/share/doc/Hadoop/index.html,除了左下角有4個默認(rèn)配置文件的超級鏈

接,如圖1-4所示,還有Hadoop的學(xué)習(xí)教程,值得讀者細(xì)讀。

圖1-4Hadoop共享文檔中導(dǎo)航文件界面

1.5實(shí)驗(yàn)步驟

1.5.1規(guī)劃部署

1.Hadoop集群部署規(guī)劃

全分布模式下部署Hadoop集群時,最低需要兩臺機(jī)器,一個主節(jié)點(diǎn)和一個從節(jié)點(diǎn)。本

書擬將Hadoop集群運(yùn)行在Linux上,將使用三臺安裝有Linux操作系統(tǒng)的機(jī)器,主機(jī)名分

別為master、slavel>slave2,其中master作為主節(jié)點(diǎn),slavel和slave2作為從節(jié)點(diǎn)。具體

Hadoop集群部署規(guī)劃表如表1-2所示。

表1-2全分布模式Hadoop集群部署規(guī)劃表

主機(jī)名IP地址運(yùn)行服務(wù)軟硬件配置

內(nèi)存;4G

NameNode

CPU:1個2核

SecondaryNameNode

master(主節(jié)點(diǎn))30硬盤:40G

RcsourccManager

操作系統(tǒng):CentOS7.6.1810

JobHistoryServer

Java:OracleJDK8ul91

Hadoop:Hadoop2.9.2

內(nèi)存:1G

CPU:1個1核

DataNode硬盤:20G

slavel(從節(jié)點(diǎn)1)31

NodeManager操作系統(tǒng):CentOS7.6.181()

Java:OracleJDK8ul91

Hadoop:Hadoop2.9.2

內(nèi)存:1G

CPU:1個1核

DataNode硬盤:20G

slave2(從節(jié)點(diǎn)2)32

NodeManager操作系統(tǒng):CentOS7.6.1810

Java:OracleJDK8ul91

Hadoop:Hadoop2.9.2

2.軟件選擇

1)虛擬機(jī)工具

鑒于多數(shù)用戶使用的是Windows操作系統(tǒng),作為Hadoop初學(xué)者,建議在Windows操

作系統(tǒng)上安裝虛擬機(jī)工具,并在其上創(chuàng)建Linux虛擬機(jī)。編者采用的虛擬機(jī)工具為VMware

WorkstationPro,讀者也可采用其他虛擬機(jī)工具例如OracleVirtualBox等。

2)Linux操作系統(tǒng)

編者采用的Linux操作系統(tǒng)為免費(fèi)的CentOS(CommunityEnterpriseOperatingSystem,

社區(qū)企業(yè)操作系統(tǒng)),CentOS是RedHatEnterpriseLinux依照開放源代碼規(guī)定釋出的源代碼

所編譯而成,讀者也可以使用其他Linux操作系統(tǒng)例如Ubunlu、RedHat、Debian>Fedora>

SUSE,openSUSE等。

3)Java

Hadoop使用Java語言編寫,因此它的運(yùn)行環(huán)境需要Java環(huán)境的支持。由于Hadoop2.7

及以后版本需要Java7或Java8,而本書采用Hadoop2.9.2版本,因此采用的Java為Oracle

JDK1.8?

4)SSH

由于Hadoop控制腳本需要依賴SSH來管理遠(yuǎn)程Hadoop守護(hù)進(jìn)程,因此Hadoop集群

的運(yùn)行平臺Linux必須安裝SSH,且sshd服務(wù)必須運(yùn)行。本書選用的CentOS7自帶有SSH?

5)Hadoop

Hadoop起源于2002年的Apache項(xiàng)目Nutch,2004年道格?卡丁開發(fā)了現(xiàn)在HDFS和

MapReduce的最初版本,2006年ApacheHadoop項(xiàng)目正式啟動,以支持MapReduce和HDFS

的獨(dú)立發(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ā)布日期下載地址

VMwareVMware

/products/workstation-

WorkstationWorkstation12.5.72017年6月22日

pro.html

ProProforWindows

CentOSCentOS7.6.18102018年11月26日/download/

JavaOracleJDK8ul912018年10月16H/technetwork/java/javase/

downloadsZindex.html

HadoopHadoop2.9.22018年11月19日/releases.html

1.5.2準(zhǔn)備機(jī)器

編者使用VMwareWorkstationPro共安裝了3臺CenlOS虛擬機(jī),分別為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-slavel和hadoop2.9.2-slave2的內(nèi)存均為1024MB,CPU為1

個1核。關(guān)于如何使用VMwareWorkstation安裝CentOS虛擬機(jī),可參見配套教學(xué)資源“使

用VMwareWorkstation安裝CentOS虛擬機(jī)過程詳解”。

1.5.3準(zhǔn)備軟件環(huán)境

3臺CentOS虛擬機(jī)的軟件環(huán)境準(zhǔn)備過程相同,下文以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對

應(yīng)的網(wǎng)卡配置文件為/etc/sysconfig/network-scripts/ifcfg-ens33,讀者可自行查看個人CentOS

的網(wǎng)卡配置文件。

(1)切換到root用戶,使用命令"vim/etc/sysconfig/network-scripts/ifcfg?ens33”修改

網(wǎng)卡配置文件,為該機(jī)器設(shè)置靜態(tài)IP地址。網(wǎng)卡ifcfg-ens33配置文件較之原始內(nèi)容,變動

的內(nèi)容如下所示。

BOOTPROTO=static

ONBOOT=yes

IPADDR=30

NETMASK=

GATEWAY=

DNS1=

(2)使用“reboot”命令重啟機(jī)器或者"systemctlrestartnetwork.service”命令重啟網(wǎng)絡(luò)

方可使得配置生效。如圖1?5所示,使用命令uipaddress"或者簡寫"ipaddr”查看到當(dāng)前

機(jī)器的IP地址已設(shè)置為靜態(tài)IP“30二

[xuluhui@localhost-]$ipaddr

1:lo:<L00PBACK,UP,L0WER_UP>mtu65536qdiscnoqueuestateUNKNOWNgroupdefaul

tqlen1000

link/loopback00:00:00:00:00:00brd00:00:00:00:00:00

inet/8scopehostlo

validlftforeverpreferredlftforever

inet6::1/128scopehost

validlftforeverpreferredlftforever

2:ens33:<BROADCAST,MULTICAST,UP,L0WER_UP>mtu1500qdiscpfifofaststateUPg

roupdefaultqlen1000

link/ether?@:@c:29:6d:5d:c9brdff:ff:ff:ff:ff:ff

inet|192.168.18.13曲24brd55scopeglobalnoprefixrouteens33

validlftforeverpreferredlftforever

inet6fe80::6bb8:6e80:d029:10f2/64scopelinknoprefixroute

validlftforeverpreferredlftforever

3:virbrO:<N0-CARRIER,BROADCAST,MULTICAST,UP>mtu1500qdiscnoqueuestateDOWN

groupdefaultqlen1000

link/ether52:54:00:0b:74:lbbrdff:ff:ff:ff:ff:ft

inet/24brd55scopeglobalvirbrO

validlftforeverpreferredlftforever

4:virbrO-nic:<BROADCAST,MULTICAST>mtu1500qdiscpfifofastmastervirbrOsta

teDOWNgroupdefaultqlen1000

link/ether52:54:00:0b:74:lbbrdff:ff:ff:ff:ff:ff

[xuluhui@localhost~]$■

圖1-5使用命令"ipaddr”查看機(jī)器IP地址

同理,將虛擬機(jī)hadoop2.9.2-slavel和hadoop2.9.2-slave2的IP地址依次設(shè)置為靜態(tài)IP

“31”、“32

2.修改主機(jī)名

切換到root用戶,通過修改配置文件/etc/hostname,可以修改Linux主機(jī)名,該配置文

件中原始內(nèi)容為:

localhost.localdomain

按照部署規(guī)劃,主節(jié)點(diǎn)的主機(jī)名為“master”,將配置文件/etc/hoslname中原始內(nèi)容替換

為:

master

使用“reboot”命令重啟機(jī)器方可使得配置生效,使用命令"hostname”驗(yàn)證當(dāng)前主機(jī)

名是否已修改為“master”。

同理,將虛擬機(jī)hadoop2.9.2-slave1和hadoop2.9.2-slave2的主機(jī)名依次設(shè)置為^slavel”、

uslave2,\

3.編輯域名映射

為協(xié)助用戶便捷訪問該機(jī)器而無需記住IP地址串,需要編輯域名映射文件/etc/hosts,

在原始內(nèi)容最后追加3行,內(nèi)容如下所示。

30master

31slavel

32slave2

使用“reboot”命令重啟機(jī)器方可使得配置生效。

同理,編輯虛擬機(jī)hadoop2.9.2-slavel和hadoop2.9.2-slave2的域名映射文件,內(nèi)容同虛

擬機(jī)hadoop2.9.2-mastero

至此,3臺CenlOS虛擬機(jī)的靜態(tài)IP、主機(jī)名、域名映射均已修改完畢,用ping命令來

檢測各節(jié)點(diǎn)間是否通訊正常,可按“CW+C”組合鍵終止數(shù)據(jù)包的發(fā)送,成功效果如圖1?6

所示。

[xuluhui(8master~]$[pingmaster]

PINGmaster(30>56(84)bytesofdata.

64bytesfrommaster(192.16818.130):icmp_seq=lttl=64time=0.047ms

64bytesfrommaster(192.16818.130):icmp_seq=2ttl=64time=0.059ms

64bytesfrommaster(192.16818.130):icmp_seq=3ttl=64time=0.047ms

64bytesfrommaster(192.16818.130):icmp_seq=4ttl=64time=0.050ms

人C

—masterpingstatistics—

4packetstransmitted,4received,0%packetloss,time2999ms

rttmin/avd/max/mdey=?.047/0.059/0.010ms

[xuluhui@master~]$|pingslavel]

PINGslavel(31)56(84)bytesofdata.

64bytesfromslavel(31):icmp_seq=lttl=64time=0.602

64bytesfromslavel(31):icmp_seq=2ttl=64time=0.253

64bytesfromslavel(31):icmp_seq=3ttl=64time=0.825

64bytesfromslavel(31):icmp_seq=4ttl=64time=0.5O2

人C

—slavelpingstatistics—

4packetstransmitted,4received,0%packetloss,time3000ms

rttmin/avq/max/mdey=0.253/0.245/。.825/0.206ms

[xuluhui@master~]$|pingslave2|

PINGslave2(32)56(84)bytesofdata.

64bytesfromslave2(32):icmp_seq=lttl=64time=0.639ms

64bytesfromslave2(32):icmp_seq=2ttl=64time=0.81Oms

64bytesfromslave2(32):icmp_seq=3ttl=64time=0.805ms

64bytesfromslave2(32):icmp_seq=4ttl=64time=0.811ms

人C

—slave?pingstatistics—

4packetstransmitted,4received,0%packetloss,time3002ms

rttmin/avg/max/mdev=0.639/0.766/0.811/0.076ms

[xuluhui(amaster~]$|

圖1-6ping命令檢測各節(jié)點(diǎn)間通訊是否正常

4.安裝和配置Java

(1)卸載OracleOpenJDK。

首先,通過命令"java-versionv查看是否已安裝Java。由于CentOS7自帶了Oracle

OpenJDK,而更建議使用OracleJDK,因此將OracleOpenJDK卸載。

其次,使用“rpm?qa|gr叩jdk”命令查詢jdk軟件,如圖1?7所示。

[xuluhui@master-]$rpm-qa|grepjdk

copy-jdk-configs-3.3-10.el7_5.noarch

java-1.8.0-openjdk-headless-81-7.bl3.el7.x8664

java-1.7.0-openjdk-91-.el7,x8664

java-1.8.0-openjdk-81-7.bl3.el7.x8664-

java-1.7.0-openjdk-headless-91-.el7.x86_64

[xuluhui(amaster-]$|

圖1-7使用rpm命令查詢jdk軟件

最后,切換到root用戶下,分別使用命令"yum-yremovejava-1.8.0*”和“yum-yremove

java-1.7.0*99卸載openjdk1.8和openjdk1.7。

同理,卸載節(jié)點(diǎn)slavel和slave2上的OracleOpenJDK。

(2)下載OracleJDK。

需要根據(jù)機(jī)器所安裝的操作系統(tǒng)和位數(shù)選擇相應(yīng)JDK安裝包下載,可以使用命令

“getconfLONG—BIT”來查詢Linux操作系統(tǒng)是32還是64位;也可以使用命令"file/bin/ls”

來顯示Linux版本號。由于編者安裝的是CentOS64位,因此下載的JDK安裝包文件名為

2018年10月16日發(fā)布的jdk-8ul91-linux-x64.tar.gz,并存放在目錄/home/xuluhui/Downloads

下。

同理,在節(jié)點(diǎn)slavel和slave2上也下載相同版本的OracleJDK,并存放在目錄

/home/xuluhui/Downloads下。

(3)安裝OracleJDK。

使用tar命令解壓進(jìn)行安裝,例如安裝到目錄/usi/java下,依次使用如下命令完成。

[root@mastercd/usr

[root@masterusr]#mkdirjava

[root@masterusr]#cdjava

[root@masterjava]#tar-zxvf/home/xuluhui/Downloads/jdk-8ul91-linux-x64.tar.gz

同理,在節(jié)點(diǎn)slave1和slave2上也安裝OracleJDK。

(4)配置Java環(huán)境。

通過修改/etc/profile文件完成環(huán)境變量JAVA_HOME、PATH和CLASSPATH的設(shè)置,

在配置文件/etc/profile的最后添加如下內(nèi)容:

#setjavaenvironment

exportJAVA_HOME=/usr/java/jdkl.8.0_191

exportPATH=$JAVA_HOME/bin:$PATH

exportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

使用命令"source/etc/profile”重新加載配置文件或者重啟機(jī)器,使配置生效,Java環(huán)境

變量配置成功后的系統(tǒng)變量“PATH”值如圖1-8所示。

[root@masterjava]#echo$PATH

/usr/java/jdkl.8.0_191/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/biI

n:/sbin:/home/xuluhui/.local/bin:/home/xuluhui/bin

[root@masterjava]#|

圖1-8重新加載配置文件/etc/profile

同理,在節(jié)點(diǎn)slave1和slave2上也配置Java環(huán)境。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論