Hadoop大數(shù)據(jù)開(kāi)發(fā)基礎(chǔ)(第2版)第3章 Hadoop基礎(chǔ)操作_第1頁(yè)
Hadoop大數(shù)據(jù)開(kāi)發(fā)基礎(chǔ)(第2版)第3章 Hadoop基礎(chǔ)操作_第2頁(yè)
Hadoop大數(shù)據(jù)開(kāi)發(fā)基礎(chǔ)(第2版)第3章 Hadoop基礎(chǔ)操作_第3頁(yè)
Hadoop大數(shù)據(jù)開(kāi)發(fā)基礎(chǔ)(第2版)第3章 Hadoop基礎(chǔ)操作_第4頁(yè)
Hadoop大數(shù)據(jù)開(kāi)發(fā)基礎(chǔ)(第2版)第3章 Hadoop基礎(chǔ)操作_第5頁(yè)
已閱讀5頁(yè),還剩55頁(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基礎(chǔ)操作Hadoop框架的核心設(shè)計(jì)為HDFS和MapReduce,HDFS負(fù)責(zé)海量數(shù)據(jù)的存儲(chǔ),MapReduce則負(fù)責(zé)海量數(shù)據(jù)的計(jì)算。對(duì)海量數(shù)據(jù)進(jìn)行計(jì)算前,數(shù)據(jù)的存儲(chǔ)是必要的一步操作,因此,需要先掌握HDFS分布式文件系統(tǒng)的基本操作。某社交網(wǎng)站有數(shù)百萬(wàn)注冊(cè)用戶,網(wǎng)站的服務(wù)器上保留了用戶登錄網(wǎng)站的日志記錄,用戶每登錄一次網(wǎng)站,將在日志文件中記錄一次用戶的郵件地址,現(xiàn)有一份社交網(wǎng)站在2021年某一天的原始日志文件email_log.txt,共800萬(wàn)行記錄,部分?jǐn)?shù)據(jù)如下所示。任務(wù)背景HillarSt@CardBlvdsnaase.nop_b@Care2www.rosu.h@UseNM.netloabat.noadrienn_c@mailccszex.huCedricR@Jilli_Cohen@NCTTA.orgpref.hyogo.jpRobe_Peterson@AsianWiredVibo-Valentia.itMClay@JesusAnswershorten.noreginaada@FitMommiesoystre-slidre.novh@GAMPortlunner.no社交網(wǎng)站的運(yùn)營(yíng)管理者希望能定期獲得用戶在某天的登錄次數(shù)信息,作為用戶行為分析的基礎(chǔ)數(shù)據(jù),因此統(tǒng)計(jì)出日志文件中每個(gè)用戶的登錄次數(shù),是一個(gè)迫切需要解決的實(shí)際任務(wù)。數(shù)據(jù)是該社交網(wǎng)站一天的日志數(shù)據(jù),如果處理一周或一月的日志數(shù)據(jù),那么數(shù)據(jù)量可能高達(dá)數(shù)千萬(wàn)或數(shù)億條。當(dāng)數(shù)據(jù)量較大時(shí),傳統(tǒng)數(shù)據(jù)庫(kù)(如MySQL)的處理能力局限性也比較大。對(duì)于海量數(shù)據(jù)的計(jì)算處理,以數(shù)據(jù)庫(kù)服務(wù)器為主的傳統(tǒng)方式已經(jīng)難以滿足需求了。Hadoop框架正是解決大數(shù)據(jù)計(jì)算的有效方案。Hadoop有兩大突出特點(diǎn),即分布式存儲(chǔ)與并行計(jì)算,而且即便在一般通用的服務(wù)器硬件環(huán)境下,也能發(fā)揮出積極的作用,因此本章將使用Hadoop框架實(shí)現(xiàn)社交網(wǎng)站的用戶登錄次數(shù)統(tǒng)計(jì)的任務(wù)。任務(wù)背景搭建并配置好Hadoop集群后,本章將通過(guò)一個(gè)社交網(wǎng)站用戶訪問(wèn)日志的實(shí)例任務(wù),講解Hadoop的基礎(chǔ)操作。首先介紹Hadoop的安全模式及其基本操作,包括查看、解除與開(kāi)啟安全模式。其次將介紹查看Hadoop集群基本信息的方法,重點(diǎn)介紹HDFS文件系統(tǒng)及其基本操作。再以Hadoop官方的示例程序包為例,介紹提交MapReduce任務(wù)至Hadoop集群運(yùn)行的方法,并實(shí)現(xiàn)社交網(wǎng)站的用戶登錄次數(shù)統(tǒng)計(jì)任務(wù)。最后介紹多個(gè)MapReduce任務(wù)運(yùn)行時(shí)管理方法,包括查詢與中斷MapReduce任務(wù)。任務(wù)背景1查看Hadoop集群的基本信息目錄認(rèn)識(shí)Hadoop安全模式2上傳文件到HDFS目錄3運(yùn)行首個(gè)MapReduce任務(wù)4管理多個(gè)MapReduce任務(wù)5安全模式是保證一個(gè)系統(tǒng)保密性、完整性及可使用性的一種機(jī)制,一定程度上可以防止系統(tǒng)里的資源遭到破壞、更改和泄露,安全模式可以使整個(gè)系統(tǒng)持續(xù)可靠地正常運(yùn)行。Hadoop集群也有安全模式,在安全模式下可保證Hadoop集群中數(shù)據(jù)塊的安全性。本小節(jié)的任務(wù)是介紹Hadoop的安全模式,了解安全模式的作用,并學(xué)習(xí)查看、開(kāi)啟和解除安全模式的操作方法。任務(wù)描述安全模式是Hadoop的保護(hù)機(jī)制,保障系統(tǒng)不受侵壞。當(dāng)處于安全模式時(shí),文件系統(tǒng)只接收讀數(shù)據(jù)的請(qǐng)求,而不接受刪除、修改等變更請(qǐng)求。若沒(méi)有安全模式,則Hadoop將處在不受保護(hù)的狀態(tài),可能存在如下安全風(fēng)險(xiǎn)。了解Hadoop安全模式Hadoop服務(wù)將不驗(yàn)證用戶或其他服務(wù)。攻擊者可以偽裝成Hadoop服務(wù)。DataNode節(jié)點(diǎn)不會(huì)對(duì)節(jié)點(diǎn)上數(shù)據(jù)塊的訪問(wèn)實(shí)施任何訪問(wèn)控制。Hadoop開(kāi)發(fā)者設(shè)定了一個(gè)安全模式,以滿足如下需求。了解Hadoop安全模式用戶只能訪問(wèn)有權(quán)限訪問(wèn)的HDFS目錄或文件。用戶只能訪問(wèn)或修改自身的MapReduce任務(wù)。用戶對(duì)Hadoop集群的相關(guān)服務(wù)要進(jìn)行身份驗(yàn)證,以防未經(jīng)授權(quán)的NameNode、DataNode、jobtracker或tasktracker服務(wù)。服務(wù)與服務(wù)之間也需要相互認(rèn)證,以防未經(jīng)授權(quán)的服務(wù)。Kerberos憑證的獲取和使用對(duì)用戶和應(yīng)用程序是透明的,前提是操作系統(tǒng)在登錄時(shí)為用戶獲取了Kerberos票證授予票證(TGT)。Kerberos是一種計(jì)算機(jī)網(wǎng)絡(luò)授權(quán)協(xié)議,使用在非安全網(wǎng)絡(luò)中,對(duì)個(gè)人通信以安全的手段進(jìn)行身份認(rèn)證。當(dāng)啟動(dòng)Hadoop集群時(shí),首先會(huì)進(jìn)入安全模式,主要是為了檢查系統(tǒng)中DataNode節(jié)點(diǎn)上的數(shù)據(jù)塊數(shù)量和有效性。在Linux系統(tǒng)上啟動(dòng)Hadoop集群,啟動(dòng)完成后可以在本機(jī)的瀏覽器輸入“http://master:9870”網(wǎng)址,查看HDFS的監(jiān)控服務(wù)。查看、解除與開(kāi)啟Hadoop安全模式1.查看安全模式Summary模塊下將提示安全模式信息,默認(rèn)情況下剛開(kāi)啟集群時(shí)將自動(dòng)開(kāi)啟安全模式,顯示“SafemodeisON”的信息,說(shuō)明安全模式已啟動(dòng)。銜接的信息為“Thereportedblocks0needsadditional1376blockstoreachthethreshold0.9990oftotalblocks1378.Theminimumnumberoflivedatanodesisnotrequired.Safemodewillbeturnedoffautomaticallyoncethethresholdshavebeenreached.”,這說(shuō)明報(bào)告的數(shù)據(jù)塊數(shù)是0塊,如果要達(dá)到總數(shù)據(jù)塊1378中的0.9990

(即閾值)還需要額外的1376個(gè)數(shù)據(jù)塊。不需要活動(dòng)數(shù)據(jù)節(jié)點(diǎn)的最小數(shù)目,一旦達(dá)到閾值,即使用的數(shù)據(jù)塊個(gè)數(shù)達(dá)到總數(shù)據(jù)塊數(shù)量的99.9%,安全模式將自動(dòng)關(guān)閉。查看、解除與開(kāi)啟Hadoop安全模式因?yàn)閿?shù)據(jù)塊還沒(méi)有加載到閾值,所以集群處于安全模式。等待一段時(shí)間,再次刷新網(wǎng)頁(yè),查看安全模式情況,將發(fā)現(xiàn)出現(xiàn)了“Safemodeisoff”信息,表示安全模式已自動(dòng)關(guān)閉。除了在Web端查看安全模式狀態(tài)外,還可以在Liunx終端使用“hdfsdfsadmin-safemodeget”命令查看。查看、解除與開(kāi)啟Hadoop安全模式當(dāng)啟動(dòng)Hadoop集群時(shí)集群會(huì)開(kāi)啟安全模式,原因是DataNode的數(shù)據(jù)塊數(shù)沒(méi)有達(dá)到總塊數(shù)的閾值。如果沒(méi)有先關(guān)閉Hadoop集群時(shí),而直接關(guān)閉了虛擬機(jī),那么Hadoop集群也會(huì)進(jìn)入安全模式,保護(hù)系統(tǒng)。當(dāng)再次開(kāi)啟Hadoop集群時(shí),系統(tǒng)會(huì)一直處于安全模式不會(huì)自動(dòng)解除,這時(shí)使用“hdfsdfsadmin-safemodeleave”令可以解除安全模式。查看、解除與開(kāi)啟Hadoop安全模式2.解除和開(kāi)啟安全模式使用“hdfsdfsadmin-safemodeenter”命令則可以使集群進(jìn)入安全模式。在安全模式中,用戶只能讀取HDFS上的數(shù)據(jù),不能進(jìn)行增加、修改等變更請(qǐng)求。例如,使用“hdfsdfs-mkdir/Hadoop”命令,在HDFS上創(chuàng)建一個(gè)/Hadoop目錄,系統(tǒng)將會(huì)提示集群處于安全模式,不能創(chuàng)建/Hadoop目錄查看、解除與開(kāi)啟Hadoop安全模式1查看Hadoop集群的基本信息目錄認(rèn)識(shí)Hadoop安全模式2上傳文件到HDFS目錄3運(yùn)行首個(gè)MapReduce任務(wù)4管理多個(gè)MapReduce任務(wù)5Hadoop集群有兩大核心功能,即分布式存儲(chǔ)與并行計(jì)算。在向Hadoop集群提交任務(wù)前,需要先了解集群的存儲(chǔ)資源與計(jì)算資源。Hadoop集群的數(shù)據(jù)存儲(chǔ),是通過(guò)HDFS實(shí)現(xiàn)的。HDFS分布式文件系統(tǒng)是由一個(gè)NameNode節(jié)點(diǎn)與多個(gè)DataNode節(jié)點(diǎn)組成的。查看HDFS文件系統(tǒng)的信息有兩種方式,分別是命令行方式與瀏覽器方式。Hadoop集群的計(jì)算資源也是分布在集群的各個(gè)節(jié)點(diǎn)上的,通過(guò)ResourceManager與NodeManager協(xié)同調(diào)配。一般可以通過(guò)瀏覽器訪問(wèn)ResourceManager的監(jiān)控服務(wù)端口查詢Hadoop集群的計(jì)算資源。本小節(jié)的任務(wù)是查詢集群的存儲(chǔ)系統(tǒng)信息與計(jì)算資源信息。任務(wù)描述當(dāng)HDFS文件系統(tǒng)完成啟動(dòng)時(shí),在服務(wù)器集群上也將啟動(dòng)相關(guān)的監(jiān)控服務(wù)。通過(guò)這些監(jiān)控服務(wù),即可查詢到大量相與HDFS文件系統(tǒng)相關(guān)的信息。HDFS的監(jiān)控服務(wù)默認(rèn)是通過(guò)NameNode節(jié)點(diǎn)的9870端口進(jìn)行訪問(wèn)。在本機(jī)瀏覽器的地址欄輸入“http://master:9870”網(wǎng)址,查看當(dāng)前HDFS文件系統(tǒng)的基本統(tǒng)計(jì)信息。查詢集群的存儲(chǔ)系統(tǒng)信息查詢集群的存儲(chǔ)系統(tǒng)信息表示HDFS文件系統(tǒng)可使用的剩余容量大小,目前為39.26GB。表示被非HDFS的應(yīng)用所占用的存儲(chǔ)總量,目前為10.18GB。ConfiguredCapacityLiveNodesDFSUsedNonDFSUsedDFSRemaining表示已配置的文件系統(tǒng)存儲(chǔ)總量,目前為50.96GB。表示在線的數(shù)據(jù)節(jié)點(diǎn)(DataNode),目前共有3個(gè)。各存儲(chǔ)容量之間的關(guān)系為Configured

Capacity等于Non

DFS

Used、DFSUsed和DFSRemaining的容量之和。表示已使用的HDFS存儲(chǔ)總量,目前為1.52GB。繼續(xù)單擊頁(yè)面中的“Datanodes”標(biāo)簽欄,可以顯示出各數(shù)據(jù)節(jié)點(diǎn)的信息。在圖中顯示了組成HDFS的3個(gè)Datanode節(jié)點(diǎn)的狀態(tài)與各自的存儲(chǔ)使用情況。在HDFS中,數(shù)據(jù)是被分塊進(jìn)行存儲(chǔ)的,每個(gè)數(shù)據(jù)塊默認(rèn)有3個(gè)副本,即每個(gè)數(shù)據(jù)節(jié)點(diǎn)上存儲(chǔ)一份數(shù)據(jù)副本,因此各節(jié)點(diǎn)的存儲(chǔ)用量是大致相等的。查詢集群的存儲(chǔ)系統(tǒng)信息Hadoop也提供了命令行查詢HDFS文件系統(tǒng)資源信息的方式,即hdfsdfsadmin-report命令,該命令的基本語(yǔ)法格式如下。hdfsdfsadmin-report[-live][-dead][-decommissioning]查詢集群的存儲(chǔ)系統(tǒng)信息查詢集群的存儲(chǔ)系統(tǒng)信息-report-report-decommissioning-report-live-report-dead輸出文件系統(tǒng)的基本信息及相關(guān)數(shù)據(jù)統(tǒng)計(jì)。輸出文件系統(tǒng)中停用節(jié)點(diǎn)的基本信息及相關(guān)數(shù)據(jù)統(tǒng)計(jì)。輸出文件系統(tǒng)中在線節(jié)點(diǎn)的基本信息及相關(guān)數(shù)據(jù)統(tǒng)計(jì)。輸出文件系統(tǒng)中失效節(jié)點(diǎn)的基本信息及相關(guān)數(shù)據(jù)統(tǒng)計(jì)。例如,在master節(jié)點(diǎn)中,使用“hdfsdfsadmin-report–live”命令查看在線節(jié)點(diǎn)的基本信息。通過(guò)查詢HDFS在線節(jié)點(diǎn)的基本信息,可以確定在當(dāng)前Hadoop集群的HDFS文件系統(tǒng)中,共有3個(gè)可用的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn),即3個(gè)DataNde節(jié)點(diǎn),可使用的存儲(chǔ)總量為39.26GB。而每個(gè)DataNde節(jié)點(diǎn)的存儲(chǔ)量則需參考HDFS數(shù)據(jù)副本的備份策略,在Hadoop集群的搭建過(guò)程中,配置文件hdfs-site.xml已指定了文件塊的副本數(shù)為3,因此,可以推算出每個(gè)DataNode節(jié)點(diǎn)實(shí)際可供使用的存儲(chǔ)量約為13GB。通過(guò)查詢HDFS在線節(jié)點(diǎn)的基本信息,可初步了解當(dāng)前文件系統(tǒng)的基本情況。若發(fā)現(xiàn)HDFS的NameNode和DataNode節(jié)點(diǎn)有異常情況,則方便相關(guān)技術(shù)人員采取對(duì)應(yīng)的措施。例如,若發(fā)現(xiàn)HDFS可使用的存儲(chǔ)容量不足5%,則需要考慮對(duì)HDFS的存儲(chǔ)容量進(jìn)行擴(kuò)充。查詢集群的存儲(chǔ)系統(tǒng)信息ConfiguredCapacity:54716792832(50.96GB)PresentCapacity:43781386240(40.77GB)DFSRemaining:42152087552(39.26GB)DFSUsed:1629298688(1.52GB)DFSUsed%:3.72%ReplicatedBlocks: Underreplicatedblocks:2 Blockswithcorruptreplicas:0 Missingblocks:0 Missingblocks(withreplicationfactor1):0 Lowredundancyblockswithhighestprioritytorecover:0 Pendingdeletionblocks:0ErasureCodedBlockGroups: Lowredundancyblockgroups:0 Blockgroupswithcorruptinternalblocks:0 Missingblockgroups:0 Lowredundancyblockswithhighestprioritytorecover:0 Pendingdeletionblocks:0

-------------------------------------------------Livedatanodes(3):

Name:31:9866(slave1)Hostname:slave1DecommissionStatus:NormalConfiguredCapacity16.99GB)DFSUsed:543096832(517.94MB)NonDFSUsed:3656306688(3.41GB)DFSRemaining13.08GB)DFSUsed%:2.98%DFSRemaining%:76.98%ConfiguredCacheCapacity:0(0B)CacheUsed:0(0B)CacheRemaining:0(0B)CacheUsed%:100.00%CacheRemaining%:0.00%Xceivers:1Lastcontact:WedMay2616:06:09CST2021LastBlockReport:WedMay2610:53:16CST2021NumofBlocks:1378

Name:32:9866(slave2)Hostname:slave2DecommissionStatus:NormalConfiguredCapacity16.99GB)DFSUsed:543100928(517.94MB)NonDFSUsed:3639062528(3.39GB)DFSRemaining13.09GB)DFSUsed%:2.98%DFSRemaining%:77.07%ConfiguredCacheCapacity:0(0B)CacheUsed:0(0B)CacheRemaining:0(0B)CacheUsed%:100.00%CacheRemaining%:0.00%Xceivers:1Lastcontact:WedMay2616:06:07CST2021LastBlockReport:WedMay2610:18:32CST2021NumofBlocks:1378

Name:33:9866(slave3)Hostname:slave3DecommissionStatus:NormalConfiguredCapacity16.99GB)DFSUsed:543100928(517.94MB)NonDFSUsed:3640037376(3.39GB)DFSRemaining13.09GB)DFSUsed%:2.98%DFSRemaining%:77.06%ConfiguredCacheCapacity:0(0B)CacheUsed:0(0B)CacheRemaining:0(0B)CacheUsed%:100.00%CacheRemaining%:0.00%Xceivers:1Lastcontact:WedMay2616:06:09CST2021LastBlockReport:WedMay2612:04:35CST2021NumofBlocks:1378Hadoop集群的計(jì)算資源,是由YARN資源管理器的ResourceManager進(jìn)行管理的。通過(guò)ResourceManager的監(jiān)控服務(wù),可以方便地查詢目前集群上的計(jì)算資源信息。在本機(jī)瀏覽器的地址欄輸入“http://master:8088/cluster/nodes”網(wǎng)址,查看當(dāng)前集群的計(jì)算資源信息。查詢集群的計(jì)算資源信息了解分布式文件系統(tǒng)——HDFSActiveNodesMemoryTotal表示在線的計(jì)算節(jié)點(diǎn),目前為3個(gè)。表示可使用的內(nèi)存總量,目前為6GB。VcoresTotal表示可使用的CPU核心,目前共有3個(gè)。了解分布式文件系統(tǒng)——HDFSRackNodeAddress表示機(jī)架名稱,默認(rèn)機(jī)架名為default-rack。表示計(jì)算節(jié)點(diǎn)的名稱及端口。Containers表示執(zhí)行計(jì)算任務(wù)的容器數(shù)量,無(wú)任務(wù)時(shí)值為0。了解分布式文件系統(tǒng)——HDFSMemUsed與MemAvail表示實(shí)際內(nèi)存使用數(shù)量與可用內(nèi)存的數(shù)量。VCoresUsed與VCoresAvail表示實(shí)際CPU核心使用數(shù)量與可用CPU核心的數(shù)量。單擊集群的計(jì)算資源信息頁(yè)面上的“slave1:8042”超鏈接,可以顯示計(jì)算節(jié)點(diǎn)slave1的各項(xiàng)資源信息??沙醪搅私猱?dāng)前集群的計(jì)算資源情況,主要包括集群上的可用計(jì)算節(jié)點(diǎn)、可用的CPU核心與內(nèi)存,以及各個(gè)節(jié)點(diǎn)自身的CPU及內(nèi)存資源。在該Hadoop集群中,有3個(gè)可用的計(jì)算節(jié)點(diǎn),可用的內(nèi)存總量為6GB,可用的CPU核心有3個(gè),其中每個(gè)節(jié)點(diǎn)各有2GB的內(nèi)存與一個(gè)CPU核心。查詢集群的計(jì)算資源信息1查看Hadoop集群的基本信息目錄認(rèn)識(shí)Hadoop安全模式2上傳文件到HDFS目錄3運(yùn)行首個(gè)MapReduce任務(wù)4管理多個(gè)MapReduce任務(wù)5HDFS是Hadoop的核心組件之一,負(fù)責(zé)文件數(shù)據(jù)的存儲(chǔ)。本小節(jié)的任務(wù)如下。了解HDFS文件系統(tǒng),以及HDFS與其他文件系統(tǒng)之間的關(guān)系。其次介紹HDFS文件系統(tǒng)的基本操作。將存儲(chǔ)在Linux本地中的日志文件email_log.txt上傳至HDFS的/user/root/目錄下。任務(wù)描述文件系統(tǒng)是對(duì)文件存儲(chǔ)設(shè)備的空間進(jìn)行組織和分配,負(fù)責(zé)文件存儲(chǔ)并對(duì)存入的文件進(jìn)行保護(hù)和檢索的系統(tǒng)。具體地說(shuō),HDFS文件系統(tǒng)負(fù)責(zé)為用戶創(chuàng)建、寫(xiě)入、讀出、修改和轉(zhuǎn)儲(chǔ)文件,當(dāng)用戶不再使用時(shí)刪除文件等。了解HDFS文件系統(tǒng)Windows操作系統(tǒng)Linux操作系統(tǒng)安裝于大部分個(gè)人計(jì)算機(jī)中,使用者將文件存儲(chǔ)在磁盤驅(qū)動(dòng)器(如D盤、E盤)的目錄中。在大部分企業(yè)服務(wù)器中,更多的是使用此操作系統(tǒng),Linux文件系統(tǒng)以及類Linux的文件系統(tǒng)均提供了樹(shù)狀的文件目錄結(jié)構(gòu),可以供使用者存儲(chǔ)或讀取文件。Hadoop集群也有專有的文件系統(tǒng),即HDFS,HDFS也使用了類Linux的目錄結(jié)構(gòu)進(jìn)行文件存儲(chǔ)。以第2章安裝及配置的Hadoop集群為例,介紹HDFS與本地計(jì)算機(jī)的文件系統(tǒng)、Linux本地的文件系統(tǒng)之間的關(guān)系。了解HDFS文件系統(tǒng)在使用HDFS文件系統(tǒng)前,需要對(duì)HDFS所存儲(chǔ)的內(nèi)容有一定的了解,可以通過(guò)瀏覽HDFS目錄結(jié)構(gòu)與文件列表進(jìn)行查看。在本地計(jì)瀏覽器的地址欄輸入“http://master:9870”網(wǎng)址,遠(yuǎn)程訪問(wèn)HDFS的監(jiān)控服務(wù)端口。當(dāng)需要訪問(wèn)HDFS上的目錄及文件時(shí),可以單擊網(wǎng)頁(yè)的“Utilities”標(biāo)簽欄,在下拉選項(xiàng)中選擇“Browsethefilesystem”選項(xiàng)。了解HDFS文件系統(tǒng)與Linux文件系統(tǒng)相似,根目錄“/”是HDFS所有目錄的起始點(diǎn)。HDFS的根目錄“/”下的目錄列表。繼續(xù)單擊圖中的“test”超鏈接,將可以瀏覽/test目錄下的內(nèi)容。圖中顯示了HDFS的/test目錄下的列表,此目錄下有一個(gè)文件1.txt。以此類推,可以通過(guò)單擊界面上的目錄鏈接,瀏覽更多的子目錄。繼續(xù)單擊圖中的文件“1.txt”超鏈接,在彈出的新窗口中單擊“Headthefile(first32K)”選項(xiàng),將在窗口下方出現(xiàn)“Filecontents”文本顯示框,顯示文件前32KB的內(nèi)容。了解HDFS文件系統(tǒng)假定已有數(shù)據(jù)文件data.txt,存儲(chǔ)在本地計(jì)算機(jī)(Windows系統(tǒng))的E盤中,現(xiàn)需要將該數(shù)據(jù)文件上傳至HDFS的/user/root/目錄下,常用的解決方法如下。文件上傳的操作流程如下,分為兩步。在本地計(jì)算機(jī)中使用SSH或FTP工具上傳文件至Linux本地的目錄(master節(jié)點(diǎn)),如/root/hadoop/目錄。在master節(jié)點(diǎn)終端,使用HDFS命令,上傳文件至HDFS的/user/root/目錄下。同理,也可以通過(guò)逆向操作進(jìn)行文件的下載,即將HDFS上的文件下載至本地計(jì)算機(jī)中。了解HDFS文件系統(tǒng)在集群服務(wù)器的終端,輸入“hdfsdfs”命令,按“Enter”鍵回車后即可看到HDFS基礎(chǔ)操作命令的使用幫助?!癧-mkdir[-p]<path>...]”的命令可用于創(chuàng)建目錄,參數(shù)<path>用以指定創(chuàng)建的新目錄。在HDFS中創(chuàng)建/user/dfstest目錄,查看在HDFS文件目錄/user/下的文件列表,可查看到新創(chuàng)建的目錄?!癶dfsdfs-mkdir<path>”的命令只能逐級(jí)地創(chuàng)建目錄,如果父目錄不存在,那么使用該命令將會(huì)報(bào)錯(cuò)。若加上參數(shù)“-p”,則可以同時(shí)創(chuàng)建多級(jí)目錄。掌握HDFS的基本操作1.創(chuàng)建目錄創(chuàng)建了新目錄/user/dfstest后,即可向該目錄上傳文件。通過(guò)hdfsdfs命令查看上傳文件命令的使用幫助。掌握HDFS的基本操作2.上傳與下載文件命

令解

釋hdfsdfs[-copyFromLocal[-f][-p][-l]<localsrc>...<dst>]將文件從本地文件系統(tǒng)復(fù)制到HDFS文件系統(tǒng),主要參數(shù)<localsrc>為本地文件路徑,<dst>為復(fù)制的目標(biāo)路徑hdfsdfs[-moveFromLocal<localsrc>...<dst>]將文件從本地文件系統(tǒng)移動(dòng)到HDFS文件系統(tǒng),主要參數(shù)<localsrc>為本地文件路徑,<dst>為移動(dòng)的目標(biāo)路徑hdfsdfs[-put[-f][-p][-l]<localsrc>...<dst>]將文件從本地文件系統(tǒng)上傳到HDFS文件系統(tǒng),主要參數(shù)<localsrc>為本地文件路徑,<dst>為上傳的目標(biāo)路徑以master中的本地文件a.txt文件為例,文件內(nèi)容如下,將master中的本地文件a.txt上傳至HDFS的/user/dfstest目錄下,其中moveFromLocal、put兩個(gè)命令對(duì)上傳至HDFS的文件進(jìn)行了重命名。在/user/dfstest目錄下可以看到剛剛創(chuàng)建的3個(gè)文件。掌握HDFS的基本操作IhaveapenIhaveanapplemoveFromLocal選項(xiàng)是將本地文件移動(dòng)到HDFS,即執(zhí)行命令后Linux系統(tǒng)本地文件a.txt將被刪除。通過(guò)hdfsdfs命令可以查看下載文件命令的使用幫助。分別使用表中的兩個(gè)命令下載HDFS的/user/dfstest目錄中的a.txt和c.txt文件至Linux本地目錄/data/hdfs_test/中。掌握HDFS的基本操作命

令解

釋hdfsdfs[-copyToLocal[-p][-ignoreCrc][-crc]<src>...<localdst>]將文件從HDFS文件系統(tǒng)復(fù)制到本地文件系統(tǒng),主要參數(shù)<src>為HDFS文件系統(tǒng)路徑,<localdst>為本地文件系統(tǒng)路徑hdfsdfs[-get[-p][-ignoreCrc][-crc]<src>...<localdst>]獲取HDFS文件系統(tǒng)上指定路徑的文件到本地文件系統(tǒng),主要參數(shù)<src>為HDFS文件系統(tǒng)路徑,<localdst>為本地文件系統(tǒng)路徑當(dāng)用戶想查看某個(gè)文件內(nèi)容時(shí),可以直接使用HDFS命令。HDFS提供了兩種查看文件內(nèi)容的命令。分別使用表中的兩種命令查看HDFS的/user/dfstest目錄下文件a.txt和b.txt的具體內(nèi)容。掌握HDFS的基本操作3.查看文件內(nèi)容命

令解

釋hdfsdfs[-cat[-ignoreCrc]<src>...]查看HDFS文件內(nèi)容,主要參數(shù)<src>指定文件路徑hdfsdfs[-tail[-f]<file>]輸出HDFS文件最后1024字節(jié),主要參數(shù)<file>指定文件當(dāng)HDFS上的某個(gè)文件或目錄被確認(rèn)不再需要時(shí),可以選擇刪除,釋放HDFS的存儲(chǔ)空間。在HDFS的命令幫助文檔中,HDFS主要提供了兩種刪除文件或目錄的命令。掌握HDFS的基本操作4.刪除文件或目錄命

令解

釋hdfsdfs[-rm[-f][-r|-R][-skipTrash]<src>...]刪除HDFS上的文件,主要參數(shù)-r用于遞歸刪除,<src>指定刪除文件的路徑hdfsdfs[-rmdir[--ignore-fail-on-non-empty]<dir>...]若刪除的是一個(gè)目錄,則可以用該方法,主要參數(shù)<dir>指定目錄路徑先在HDFS的/user/dfstest目錄下創(chuàng)建一個(gè)測(cè)試目錄rmdir,再分別刪除/user/dfstest目錄下的c.txt文件和新創(chuàng)建的rmdir目錄。在執(zhí)行刪除命令后,查看HDFS的/user/dfstest目錄下的內(nèi)容,已成功刪除c.txt文件和rmdir目錄。掌握HDFS的基本操作將用戶日志文件email_log.txt上傳至HDFS目錄/user/root/,并在Web端查看上傳結(jié)果,實(shí)現(xiàn)步驟如下。將本地計(jì)算機(jī)硬盤中的用戶日志文件email_log.txt傳輸至Linux本地的/root/hadoop/目錄。打開(kāi)XmanagerEnterprise附帶的文件傳輸工具Xftp,連接集群服務(wù)器的master節(jié)點(diǎn),在左側(cè)的本地計(jì)算機(jī)的文件系統(tǒng)中找到將要上傳的文件。任務(wù)實(shí)現(xiàn)在master節(jié)點(diǎn)上執(zhí)行HDFS命令,上傳email_log.txt至HDFS的/user/root/目錄下。查看HDFS的/user/root/目錄,email_log.txt文件上傳成功。任務(wù)實(shí)現(xiàn)查看HDFS的/user/root/目錄下email_log.txt文件的內(nèi)容。在該文件頁(yè)面單擊“Blockinformation”旁邊的“Block0”下拉窗口,可選擇切換文件存儲(chǔ)的板塊,email_log.txt文件上傳時(shí)被分為兩個(gè)數(shù)據(jù)塊進(jìn)行存儲(chǔ),每個(gè)數(shù)據(jù)塊都有3個(gè)副本,分別存儲(chǔ)在3個(gè)不同的數(shù)據(jù)節(jié)點(diǎn)上。Hadoop3.x版本默認(rèn)設(shè)置的HDFS數(shù)據(jù)塊大小為128MB,email_log.txt文件的原始大小為216MB,因此email_log.txt文件被拆分為兩個(gè)數(shù)據(jù)塊。這兩個(gè)數(shù)據(jù)塊累計(jì)占用了256MB的存儲(chǔ)空間。舉一個(gè)極端的例子,如果需要存儲(chǔ)一個(gè)只有1KB的文件,那么HDFS也會(huì)分配一個(gè)128MB的數(shù)據(jù)塊空間存儲(chǔ)該文件。HDFS本身的優(yōu)勢(shì)是用于存儲(chǔ)大數(shù)據(jù)文件,若存儲(chǔ)大量的小文件則會(huì)造成資源的浪費(fèi)。任務(wù)實(shí)現(xiàn)1查看Hadoop集群的基本信息目錄認(rèn)識(shí)Hadoop安全模式2上傳文件到HDFS目錄3運(yùn)行首個(gè)MapReduce任務(wù)4管理多個(gè)MapReduce任務(wù)5MapReduce是Hadoop的數(shù)據(jù)處理引擎,是運(yùn)算程序的核心。Hadoop官方提供了一個(gè)hadoop-mapreduce-examples-3.1.4.jar示例程序包給使用者初步運(yùn)行MapReduce任務(wù)。在該示例程序包中,存在一個(gè)詞頻統(tǒng)計(jì)模塊,調(diào)用該模塊即可完成用戶登錄次數(shù)統(tǒng)計(jì)任務(wù)。本小節(jié)的任務(wù)是提交運(yùn)行首個(gè)MapReduce任務(wù),并對(duì)HDFS的/user/root/目錄下的日志文件email_log.txt進(jìn)行計(jì)算,調(diào)用官方示例程序包中的詞頻統(tǒng)計(jì)模塊統(tǒng)計(jì)出每個(gè)用戶的登錄次數(shù)。任務(wù)描述在Linux本地的$HADOOP_HOME/share/hadoop/mapreduce/目錄下可以找到Hadoop官方示例程序包hadoop-mapreduce-examples-3.1.4.jar。該程序包封裝了一些常用的測(cè)試模塊。在測(cè)試模塊列表中,模塊wordcount正好適合對(duì)email_log.txt日志文件中的數(shù)據(jù)進(jìn)行登錄次數(shù)的統(tǒng)計(jì)。了解Hadoop官方的示例程序包模塊名稱內(nèi)

容multifilewc統(tǒng)計(jì)多個(gè)文件中單詞的數(shù)量pi應(yīng)用擬蒙特卡羅(Quasi-MonteCarlo)算法估算圓周率π的值randomtextwriter在每個(gè)數(shù)據(jù)節(jié)點(diǎn)隨機(jī)生成一個(gè)10GB的文本文件wordcount對(duì)輸入文件中的單詞進(jìn)行頻數(shù)統(tǒng)計(jì)wordmean計(jì)算輸入文件中單詞的平均長(zhǎng)度wordmedian計(jì)算輸入文件中單詞長(zhǎng)度的中位數(shù)wordstandarddeviation計(jì)算輸入文件中單詞長(zhǎng)度的標(biāo)準(zhǔn)差提交MapReduce任務(wù),通常使用hadoopjar命令。hadoopjar命令的基本語(yǔ)法格式如下。hadoopjar<jar>[mainClass]args因?yàn)閔adoopjar命令的附帶參數(shù)較多,所以需要結(jié)合實(shí)際任務(wù),對(duì)該命令的各項(xiàng)參數(shù)依次進(jìn)行說(shuō)明。使用hadoopjar命令對(duì)email_log.txt日志文件中的數(shù)據(jù)進(jìn)行登錄次數(shù)的統(tǒng)計(jì)。提交MapReduce任務(wù)給集群運(yùn)行針對(duì)上一頁(yè)P(yáng)PT中hadoopjar命令的常用參數(shù)解釋說(shuō)明如下。提交MapReduce任務(wù)給集群運(yùn)行Hadoop官方提供的示例程序包,其中包括詞頻統(tǒng)計(jì)模塊(wordcount)。程序包中的主類名稱。$HADOOP_HOME/user/root/output/user/root/email_log.txtwordcounthadoop-mapreduce-examples-3.1.4.jar指主機(jī)中設(shè)置的環(huán)境變量(參考/etc/profile內(nèi)容)。此處的$HADOOP_HOME指的是Linux本地的/usr/local/hadoop-3.1.4目錄。HDFS上的輸入文件名稱。HDFS上的輸出文件目錄。向集群提交任務(wù)后,hadoopjar執(zhí)行MapReduce任務(wù)時(shí)的日志輸出信息,其中的一些關(guān)鍵信息有助于用戶檢查MapReduce任務(wù)執(zhí)行的過(guò)程與狀態(tài)。job_1621994265091_0001:表示此項(xiàng)任務(wù)的ID,通常也被稱為作業(yè)號(hào)。2021-05-2617:57:53,999INFOmapreduce.Job:map0%reduce0%:表示將開(kāi)始Map操作。2021-05-2617:58:23,279INFOmapreduce.Job:map100%reduce0%:表示Map操作完成。2021-05-2617:58:33,795INFOmapreduce.Job:map100%reduce100%:表示Reduce操作完成。2021-05-2617:58:33,807INFOmapreduce.Job:Jobjob_1621994265091_0001completedsuccessfully:表示此作業(yè)成功完成。Mapinputrecords=8000000:表示輸入的記錄共有800萬(wàn)條(對(duì)應(yīng)原始文件中的800萬(wàn)行記錄)。Reduceoutputrecords=3896706:表示輸出的結(jié)果共有3896706條。提交MapReduce任務(wù)給集群運(yùn)行2021-05-2617:57:39,167INFOclient.RMProxy:ConnectingtoResourceManageratmaster/30:80322021-05-2617:57:40,090INFOmapreduce.JobResourceUploader:DisablingErasureCodingforpath:/tmp/hadoop-yarn/staging/root/.staging/job_1621994265091_00012021-05-2617:57:40,535INFOinput.FileInputFormat:Totalinputfilestoprocess:12021-05-2617:57:40,649INFOmapreduce.JobSubmitter:numberofsplits:22021-05-2617:57:40,966INFOmapreduce.JobSubmitter:Submittingtokensforjob:job_1621994265091_00012021-05-2617:57:40,968INFOmapreduce.JobSubmitter:Executingwithtokens:[]2021-05-2617:57:41,209INFOconf.Configuration:resource-types.xmlnotfound2021-05-2617:57:41,209INFOresource.ResourceUtils:Unabletofind'resource-types.xml'.2021-05-2617:57:41,733INFOimpl.YarnClientImpl:Submittedapplicationapplication_1621994265091_00012021-05-2617:57:41,799INFOmapreduce.Job:Theurltotrackthejob:http://master:8088/proxy/application_1621994265091_0001/2021-05-2617:57:41,799INFOmapreduce.Job:Runningjob:job_1621994265091_00012021-05-2617:57:53,995INFOmapreduce.Job:Jobjob_1621994265091_0001runninginubermode:false2021-05-2617:57:53,999INFOmapreduce.Job:map0%reduce0%2021-05-2617:58:14,187INFOmapreduce.Job:map28%reduce0%2021-05-2617:58:15,201INFOmapreduce.Job:map61%reduce0%2021-05-2617:58:18,233INFOmapreduce.Job:map78%reduce0%2021-05-2617:58:20,260INFOmapreduce.Job:map85%reduce0%2021-05-2617:58:23,279INFOmapreduce.Job:map100%reduce0%2021-05-2617:58:33,795INFOmapreduce.Job:map100%reduce100%2021-05-2617:58:33,807INFOmapreduce.Job:Jobjob_1621994265091_0001completedsuccessfully2021-05-2617:58:33,913INFOmapreduce.Job:Counters:53 FileSystemCounters FILE:Numberofbytesread=416431057 FILE:Numberofbyteswritten=585286936 FILE:Numberofreadoperations=0 FILE:Numberoflargereadoperations=0 FILE:Numberofwriteoperations=0

HDFS:Numberofbytesread=226383985 HDFS:Numberofbyteswritten=114167885 HDFS:Numberofreadoperations=11 HDFS:Numberoflargereadoperations=0 HDFS:Numberofwriteoperations=2 JobCounters Launchedmaptasks=2 Launchedreducetasks=1 Data-localmaptasks=2 Totaltimespentbyallmapsinoccupiedslots(ms)=189408 Totaltimespentbyallreducesinoccupiedslots(ms)=53324 Totaltimespentbyallmaptasks(ms)=47352 Totaltimespentbyallreducetasks(ms)=13331 Totalvcore-millisecondstakenbyallmaptasks=47352 Totalvcore-millisecondstakenbyallreducetasks=13331 Totalmegabyte-millisecondstakenbyallmaptasks=96976896 Totalmegabyte-millisecondstakenbyallreducetasks=27301888 Map-ReduceFramework Mapinputrecords=8000000 Mapoutputrecords=8000000 Mapoutputbytes=250379675 Mapoutputmaterializedbytes=168189616 Inputsplitbytes=214 Combineinputrecords=12301355 Combineoutputrecords=9352725 Reduceinputgroups=3896706 Reduceshufflebytes=168189616 Reduceinputrecords=5051370 Reduceoutputrecords=3896706 SpilledRecords=17558337 ShuffledMaps=2

FailedShuffles=0 MergedMapoutputs=2 GCtimeelapsed(ms)=1209 CPUtimespent(ms)=41140 GCtimeelapsed(ms)=1209 CPUtimespent(ms)=41140Physicalmemory(bytes)snapshot=702377984 Virtualmemory(bytes)snapshot=10800414720 Totalcommittedheapusage(bytes)=521936896 PeakMapPhysicalmemory(bytes)=206540800 PeakMapVirtualmemory(bytes)=3598184448 PeakReducePhysicalmemory(bytes)=309469184 PeakReduceVirtualmemory(bytes)=3604045824 ShuffleErrors BAD_ID=0 CONNECTION=0 IO_ERROR=0 WRONG_LENGTH=0 WRONG_MAP=0 WRONG_REDUCE=0 FileInputFormatCounters BytesRead=226383771 FileOutputFormatCounters BytesWritten=114167885執(zhí)行整個(gè)任務(wù),累計(jì)用時(shí)40秒左右。在相同硬件資源的條件下,基于Hadoop集群的并行計(jì)算,其執(zhí)行效率是很高的。任務(wù)執(zhí)行完成后,在HDFS的/user/output/輸出目錄下將生成兩個(gè)新文件,一個(gè)是_SUCCESS標(biāo)識(shí)文件,表示任務(wù)執(zhí)行完成;另一個(gè)是part-r-00000文件,即任務(wù)執(zhí)行完成后產(chǎn)生的結(jié)果文件,查看part-r-00000文件的內(nèi)容。在圖中,顯示了兩列數(shù)據(jù),第1列是用戶名,第2列為該用戶的登錄次數(shù)。統(tǒng)計(jì)用戶登錄次數(shù)的任務(wù)到此已完成。提交MapReduce任務(wù)給集群運(yùn)行1查看Hadoop集群的基本信息目錄認(rèn)識(shí)Hadoop安全模式2上傳文件到HDFS目錄3運(yùn)行首個(gè)MapReduce任務(wù)4管理多個(gè)MapReduce任務(wù)5Hadoop是一個(gè)多任務(wù)系統(tǒng),可以同時(shí)為多個(gè)用戶、多個(gè)作業(yè)處理多個(gè)數(shù)據(jù)集。用戶可以在本地計(jì)算機(jī)的瀏覽器中輸入“http://master:8088/”網(wǎng)址,打開(kāi)Hadoop集

溫馨提示

  • 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)論