版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
廈門大學(xué)計(jì)算機(jī)科學(xué)系2015年版林子雨廈門大學(xué)計(jì)算機(jī)科學(xué)系主頁(yè):
第三章分布式文件系統(tǒng)HDFS
〔PPT版本號(hào):2015年6月第1.0版〕《大數(shù)據(jù)技術(shù)原理與應(yīng)用》溫馨提示:編輯幻燈片母版,可以修改每頁(yè)P(yáng)PT的廈大?;蘸偷撞课淖痔峋V3.1分布式文件系統(tǒng)3.2HDFS簡(jiǎn)介3.3HDFS相關(guān)概念3.4HDFS體系結(jié)構(gòu)3.5HDFS存儲(chǔ)原理3.6HDFS大數(shù)據(jù)讀寫過(guò)程3.7 HDFS編程實(shí)踐歡送訪問(wèn)《大數(shù)據(jù)技術(shù)原理與應(yīng)用》教材官方網(wǎng)站:本PPT是如下教材的配套講義:21世紀(jì)高等教育計(jì)算機(jī)規(guī)劃教材《大數(shù)據(jù)技術(shù)原理與應(yīng)用——概念、存儲(chǔ)、處理、分析與應(yīng)用》〔2015年6月第1版〕廈門大學(xué)林子雨編著,人民郵電出版社ISBN:978-7-115-39287-93.1 分布式文件系統(tǒng)3.1.1 計(jì)算機(jī)集群結(jié)構(gòu)3.1.2 分布式文件系統(tǒng)的結(jié)構(gòu)3.1.3 分布式文件系統(tǒng)的設(shè)計(jì)需求3.1.1 計(jì)算機(jī)集群結(jié)構(gòu)分布式文件系統(tǒng)把文件分布存儲(chǔ)到多個(gè)計(jì)算機(jī)節(jié)點(diǎn)上,成千上萬(wàn)的計(jì)算機(jī)節(jié)點(diǎn)構(gòu)成計(jì)算機(jī)集群與之前使用多個(gè)處理器和專用高級(jí)硬件的并行化處理裝置不同的是,目前的分布式文件系統(tǒng)所采用的計(jì)算機(jī)集群,都是由普通硬件構(gòu)成的,這就大大降低了硬件上的開銷圖3-1計(jì)算機(jī)集群的根本架構(gòu)3.1.2 分布式文件系統(tǒng)的結(jié)構(gòu)分布式文件系統(tǒng)在物理結(jié)構(gòu)上是由計(jì)算機(jī)集群中的多個(gè)節(jié)點(diǎn)構(gòu)成的,這些節(jié)點(diǎn)分為兩類,一類叫“主節(jié)點(diǎn)”(MasterNode)或者也被稱為“名稱結(jié)點(diǎn)”(NameNode),另一類叫“從節(jié)點(diǎn)”〔SlaveNode〕或者也被稱為“數(shù)據(jù)節(jié)點(diǎn)”(DataNode)圖3-2大規(guī)模文件系統(tǒng)的整體結(jié)構(gòu)3.1.3 分布式文件系統(tǒng)的設(shè)計(jì)需求分布式文件系統(tǒng)的設(shè)計(jì)目標(biāo)主要包括透明性、并發(fā)控制、可伸縮性、容錯(cuò)以及平安需求等。但是,在具體實(shí)現(xiàn)中,不同產(chǎn)品實(shí)現(xiàn)的級(jí)別和方式都有所不同?!裢该餍院x:具備訪問(wèn)透明性、位置透明性和伸縮透明性
HDFS實(shí)現(xiàn)情況:只能提供一定程度的訪問(wèn)透明性,完全支持位置透明性和伸縮透明性●并發(fā)控制含義:客戶端對(duì)于文件的讀寫不應(yīng)該影響其他客戶端對(duì)同一個(gè)文件的讀寫
HDFS實(shí)現(xiàn)情況:機(jī)制非常簡(jiǎn)單,任何時(shí)間都只允許有一個(gè)程序在寫入某個(gè)文件3.1.3 分布式文件系統(tǒng)的設(shè)計(jì)需求●文件復(fù)制含義:一個(gè)文件可以擁有在不同位置的多個(gè)副本HDFS實(shí)現(xiàn)情況:HDFS采用了多副本機(jī)制●硬件和操作系統(tǒng)的異構(gòu)性含義:可以在不同的操作系統(tǒng)和計(jì)算機(jī)上實(shí)現(xiàn)同樣的客戶端和效勞器端程序HDFS實(shí)現(xiàn)情況:采用Java語(yǔ)言開發(fā),具有很好的跨平臺(tái)能力3.1.3 分布式文件系統(tǒng)的設(shè)計(jì)需求●平安含義:保障系統(tǒng)的平安性HDFS實(shí)現(xiàn)情況:平安性較弱●可伸縮性含義:支持節(jié)點(diǎn)的動(dòng)態(tài)參加或退出HDFS實(shí)現(xiàn)情況:建立在大規(guī)模廉價(jià)機(jī)器上的分布式文件系統(tǒng)集群,具有很好的可伸縮性●容錯(cuò)含義:保證文件效勞在客戶端或者效勞端出現(xiàn)問(wèn)題的時(shí)候能正常使用HDFS實(shí)現(xiàn)情況:具有多副本機(jī)制和故障自動(dòng)檢測(cè)、恢復(fù)機(jī)制3.2 HDFS簡(jiǎn)介總體而言,HDFS要實(shí)現(xiàn)以下目標(biāo):●兼容廉價(jià)的硬件設(shè)備●流數(shù)據(jù)讀寫●大數(shù)據(jù)集●簡(jiǎn)單的文件模型●強(qiáng)大的跨平臺(tái)兼容性HDFS特殊的設(shè)計(jì),在實(shí)現(xiàn)上述優(yōu)良特性的同時(shí),也使得自身具有一些應(yīng)用局限性,主要包括以下幾個(gè)方面:●不適合低延遲數(shù)據(jù)訪問(wèn)●無(wú)法高效存儲(chǔ)大量小文件●不支持多用戶寫入及任意修改文件3.3.1 塊HDFS采用抽象的塊概念可以帶來(lái)以下幾個(gè)明顯的好處:●支持大規(guī)模文件存儲(chǔ):文件以塊為單位進(jìn)行存儲(chǔ),一個(gè)大規(guī)模文件可以被分拆成假設(shè)干個(gè)文件塊,不同的文件塊可以被分發(fā)到不同的節(jié)點(diǎn)上,因此,一個(gè)文件的大小不會(huì)受到單個(gè)節(jié)點(diǎn)的存儲(chǔ)容量的限制,可以遠(yuǎn)遠(yuǎn)大于網(wǎng)絡(luò)中任意節(jié)點(diǎn)的存儲(chǔ)容量●簡(jiǎn)化系統(tǒng)設(shè)計(jì):首先,大大簡(jiǎn)化了存儲(chǔ)管理,因?yàn)槲募K大小是固定的,這樣就可以很容易計(jì)算出一個(gè)節(jié)點(diǎn)可以存儲(chǔ)多少文件塊;其次,方便了元數(shù)據(jù)的管理,元數(shù)據(jù)不需要和文件塊一起存儲(chǔ),可以由其他系統(tǒng)負(fù)責(zé)管理元數(shù)據(jù)●適合數(shù)據(jù)備份:每個(gè)文件塊都可以冗余存儲(chǔ)到多個(gè)節(jié)點(diǎn)上,大大提高了系統(tǒng)的容錯(cuò)性和可用性3.3.2 名稱節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn)在HDFS中,名稱節(jié)點(diǎn)〔NameNode〕負(fù)責(zé)管理分布式文件系統(tǒng)的命名空間〔Namespace〕,保存了兩個(gè)核心的數(shù)據(jù)結(jié)構(gòu),即FsImage和EditLog,F(xiàn)sImage用于維護(hù)文件系統(tǒng)樹以及文件樹中所有的文件和文件夾的元數(shù)據(jù),操作日志文件EditLog中記錄了所有針對(duì)文件的創(chuàng)立、刪除、重命名等操作。名稱節(jié)點(diǎn)記錄了每個(gè)文件中各個(gè)塊所在的數(shù)據(jù)節(jié)點(diǎn)的位置信息。以下圖展示了名稱節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)。圖3-3名稱節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)3.3.2 名稱節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn)數(shù)據(jù)節(jié)點(diǎn)〔DataNode〕是分布式文件系統(tǒng)HDFS的工作節(jié)點(diǎn),負(fù)責(zé)數(shù)據(jù)的存儲(chǔ)和讀取,會(huì)根據(jù)客戶端或者是名稱節(jié)點(diǎn)的調(diào)度來(lái)進(jìn)行數(shù)據(jù)的存儲(chǔ)和檢索,并且向名稱節(jié)點(diǎn)定期發(fā)送自己所存儲(chǔ)的塊的列表。每個(gè)數(shù)據(jù)節(jié)點(diǎn)中的數(shù)據(jù)會(huì)被保存在各自節(jié)點(diǎn)的本地Linux文件系統(tǒng)中3.4 HDFS體系結(jié)構(gòu)3.4.1 HDFS體系結(jié)構(gòu)概述3.4.2 HDFS命名空間管理3.4.3 通信協(xié)議3.4.4 客戶端3.4.5 HDFS體系結(jié)構(gòu)的局限性3.4.1 HDFS體系結(jié)構(gòu)概述HDFS采用了主從〔Master/Slave〕結(jié)構(gòu)模型,一個(gè)HDFS集群包括一個(gè)名稱節(jié)點(diǎn)〔NameNode〕和假設(shè)干個(gè)數(shù)據(jù)節(jié)點(diǎn)〔DataNode〕〔如圖3-4所示〕。名稱節(jié)點(diǎn)作為中心效勞器,負(fù)責(zé)管理文件系統(tǒng)的命名空間及客戶端對(duì)文件的訪問(wèn)。集群中的數(shù)據(jù)節(jié)點(diǎn)一般是一個(gè)節(jié)點(diǎn)運(yùn)行一個(gè)數(shù)據(jù)節(jié)點(diǎn)進(jìn)程,負(fù)責(zé)處理文件系統(tǒng)客戶端的讀/寫請(qǐng)求,在名稱節(jié)點(diǎn)的統(tǒng)一調(diào)度下進(jìn)行數(shù)據(jù)塊的創(chuàng)立、刪除和復(fù)制等操作。每個(gè)數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)實(shí)際上是保存在本地Linux文件系統(tǒng)中的圖3-4HDFS體系結(jié)構(gòu)3.4.2 HDFS命名空間管理HDFS的命名空間包含目錄、文件和塊。命名空間管理是指命名空間支持對(duì)HDFS中的目錄、文件和塊做類似文件系統(tǒng)的創(chuàng)立、修改、刪除等根本操作。在當(dāng)前的HDFS體系結(jié)構(gòu)中,在整個(gè)HDFS集群中只有一個(gè)命名空間,并且只有唯一一個(gè)名稱節(jié)點(diǎn),該節(jié)點(diǎn)負(fù)責(zé)對(duì)這個(gè)命名空間進(jìn)行管理HDFS使用的是傳統(tǒng)的分級(jí)文件體系,因此,用戶可以像使用普通文件系統(tǒng)一樣,創(chuàng)立、刪除目錄和文件,在目錄間轉(zhuǎn)移文件,重命名文件等。但是,HDFS還沒有實(shí)現(xiàn)磁盤配額和文件訪問(wèn)權(quán)限等功能,也不支持文件的硬連接和軟連接〔快捷方式〕3.4.3 通信協(xié)議HDFS是一個(gè)部署在集群上的分布式文件系統(tǒng),因此,很多數(shù)據(jù)需要通過(guò)網(wǎng)絡(luò)進(jìn)行傳輸所有的HDFS通信協(xié)議都是構(gòu)建在TCP/IP協(xié)議根底之上的客戶端通過(guò)一個(gè)可配置的端口向名稱節(jié)點(diǎn)主動(dòng)發(fā)起TCP連接,并使用客戶端協(xié)議與名稱節(jié)點(diǎn)進(jìn)行交互名稱節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn)之間那么使用數(shù)據(jù)節(jié)點(diǎn)協(xié)議進(jìn)行交互客戶端與數(shù)據(jù)節(jié)點(diǎn)的交互是通過(guò)RPC〔RemoteProcedureCall〕來(lái)實(shí)現(xiàn)的。在設(shè)計(jì)上,名稱節(jié)點(diǎn)不會(huì)主動(dòng)發(fā)起RPC,而是響應(yīng)來(lái)自客戶端和數(shù)據(jù)節(jié)點(diǎn)的RPC請(qǐng)求3.4.4 客戶端客戶端是用戶操作HDFS最常用的方式,HDFS在部署時(shí)都提供了客戶端。不過(guò)需要說(shuō)明的是,嚴(yán)格來(lái)說(shuō),客戶端并不算是HDFS的一局部。客戶端可以支持翻開、讀取、寫入等常見的操作,并且提供了類似Shell的命令行方式來(lái)訪問(wèn)HDFS中的數(shù)據(jù)〔參見第節(jié)〕。此外,HDFS也提供了JavaAPI,作為應(yīng)用程序訪問(wèn)文件系統(tǒng)的客戶端編程接口〔參見第節(jié)〕3.4.5 HDFS體系結(jié)構(gòu)的局限性HDFS只設(shè)置唯一一個(gè)名稱節(jié)點(diǎn),這樣做雖然大大簡(jiǎn)化了系統(tǒng)設(shè)計(jì),但也帶來(lái)了一些明顯的局限性,具體如下:〔1〕命名空間的限制:名稱節(jié)點(diǎn)是保存在內(nèi)存中的,因此,名稱節(jié)點(diǎn)能夠容納的對(duì)象〔文件、塊〕的個(gè)數(shù)會(huì)受到內(nèi)存空間大小的限制?!?〕性能的瓶頸:整個(gè)分布式文件系統(tǒng)的吞吐量,受限于單個(gè)名稱節(jié)點(diǎn)的吞吐量?!?〕隔離問(wèn)題:由于集群中只有一個(gè)名稱節(jié)點(diǎn),只有一個(gè)命名空間,因此,無(wú)法對(duì)不同應(yīng)用程序進(jìn)行隔離?!?〕集群的可用性:一旦這個(gè)唯一的名稱節(jié)點(diǎn)發(fā)生故障,會(huì)導(dǎo)致整個(gè)集群變得不可用。3.5 HDFS存儲(chǔ)原理3.5.1 冗余數(shù)據(jù)保存3.5.2 數(shù)據(jù)存取策略3.5.3 數(shù)據(jù)錯(cuò)誤與恢復(fù)3.5.1 冗余數(shù)據(jù)保存作為一個(gè)分布式文件系統(tǒng),為了保證系統(tǒng)的容錯(cuò)性和可用性,HDFS采用了多副本方式對(duì)數(shù)據(jù)進(jìn)行冗余存儲(chǔ),通常一個(gè)數(shù)據(jù)塊的多個(gè)副本會(huì)被分布到不同的數(shù)據(jù)節(jié)點(diǎn)上,如圖3-5所示,數(shù)據(jù)塊1被分別存放到數(shù)據(jù)節(jié)點(diǎn)A和C上,數(shù)據(jù)塊2被存放在數(shù)據(jù)節(jié)點(diǎn)A和B上。這種多副本方式具有以下幾個(gè)優(yōu)點(diǎn):〔1〕加快數(shù)據(jù)傳輸速度〔2〕容易檢查數(shù)據(jù)錯(cuò)誤〔3〕保證數(shù)據(jù)可靠性圖3-5HDFS數(shù)據(jù)塊多副本存儲(chǔ)3.5.2 數(shù)據(jù)存取策略數(shù)據(jù)存取策略包括數(shù)據(jù)存放、數(shù)據(jù)讀取和數(shù)據(jù)復(fù)制等方面,它在很大程度上會(huì)影響到整個(gè)分布式文件系統(tǒng)的讀寫性能,是分布式文件系統(tǒng)的核心內(nèi)容。1.數(shù)據(jù)存放為了提高數(shù)據(jù)可靠性與系統(tǒng)可用性,以及充分利用網(wǎng)絡(luò)帶寬,HDFS采用了以機(jī)架〔Rack〕為根底的數(shù)據(jù)存放策略HDFS默認(rèn)每個(gè)數(shù)據(jù)節(jié)點(diǎn)都是在不同的機(jī)架上,缺點(diǎn)是寫入數(shù)據(jù)的時(shí)候不能充分利用同一機(jī)架內(nèi)部機(jī)器之間的帶寬。優(yōu)點(diǎn):首先,可以獲得很高的數(shù)據(jù)可靠性,即使一個(gè)機(jī)架發(fā)生故障,位于其他機(jī)架上的數(shù)據(jù)副本仍然是可用的;其次,在讀取數(shù)據(jù)的時(shí)候,可以在多個(gè)機(jī)架并行讀取數(shù)據(jù),大大提高了數(shù)據(jù)讀取速度;再次,可以更容易實(shí)現(xiàn)系統(tǒng)內(nèi)部負(fù)載均衡和錯(cuò)誤處理。3.5.2 數(shù)據(jù)存取策略2.數(shù)據(jù)讀取HDFS提供了一個(gè)API可以確定一個(gè)數(shù)據(jù)節(jié)點(diǎn)所屬的機(jī)架ID,客戶端也可以調(diào)用API獲取自己所屬的機(jī)架ID當(dāng)客戶端讀取數(shù)據(jù)時(shí),從名稱節(jié)點(diǎn)獲得數(shù)據(jù)塊不同副本的存放位置列表,列表中包含了副本所在的數(shù)據(jù)節(jié)點(diǎn),可以調(diào)用API來(lái)確定客戶端和這些數(shù)據(jù)節(jié)點(diǎn)所屬的機(jī)架ID,當(dāng)發(fā)現(xiàn)某個(gè)數(shù)據(jù)塊副本對(duì)應(yīng)的機(jī)架ID和客戶端對(duì)應(yīng)的機(jī)架ID相同時(shí),就優(yōu)先選擇該副本讀取數(shù)據(jù),如果沒有發(fā)現(xiàn),就隨機(jī)選擇一個(gè)副本讀取數(shù)據(jù)3.5.2 數(shù)據(jù)存取策略3.數(shù)據(jù)復(fù)制HDFS的數(shù)據(jù)復(fù)制采用了流水線復(fù)制的策略,大大提高了數(shù)據(jù)復(fù)制過(guò)程的效率當(dāng)客戶端要往HDFS中寫入一個(gè)文件時(shí),這個(gè)文件會(huì)首先被寫入本地,并被切分成假設(shè)干個(gè)塊,每個(gè)塊的大小是由HDFS的設(shè)定值來(lái)決定的每個(gè)塊都向HDFS集群中的名稱節(jié)點(diǎn)發(fā)起寫請(qǐng)求,名稱節(jié)點(diǎn)會(huì)根據(jù)系統(tǒng)中各個(gè)數(shù)據(jù)節(jié)點(diǎn)的使用情況,選擇一個(gè)數(shù)據(jù)節(jié)點(diǎn)列表返回給客戶端,然后,客戶端就把數(shù)據(jù)首先寫入列表中的第一個(gè)數(shù)據(jù)節(jié)點(diǎn),同時(shí)把列表傳給第一個(gè)數(shù)據(jù)節(jié)點(diǎn)當(dāng)?shù)谝粋€(gè)數(shù)據(jù)節(jié)點(diǎn)接收到4KB數(shù)據(jù)的時(shí)候,寫入本地,并且向列表中的第二個(gè)數(shù)據(jù)節(jié)點(diǎn)發(fā)起連接請(qǐng)求,把自己已經(jīng)接收到的4KB數(shù)據(jù)和列表傳給第二個(gè)數(shù)據(jù)節(jié)點(diǎn)當(dāng)?shù)诙€(gè)數(shù)據(jù)節(jié)點(diǎn)接收到4KB數(shù)據(jù)的時(shí)候,寫入本地,并且向列表中的第三個(gè)數(shù)據(jù)節(jié)點(diǎn)發(fā)起連接請(qǐng)求,依此類推,列表中的多個(gè)數(shù)據(jù)節(jié)點(diǎn)形成一條數(shù)據(jù)復(fù)制的流水線最后,當(dāng)文件寫完的時(shí)候,數(shù)據(jù)復(fù)制也同時(shí)完成3.5.3 數(shù)據(jù)錯(cuò)誤與恢復(fù)HDFS具有較高的容錯(cuò)性,可以兼容廉價(jià)的硬件,它把硬件出錯(cuò)看作一種常態(tài),而不是異常,并設(shè)計(jì)了相應(yīng)的機(jī)制檢測(cè)數(shù)據(jù)錯(cuò)誤和進(jìn)行自動(dòng)恢復(fù),主要包括以下幾種情形:名稱節(jié)點(diǎn)出錯(cuò)、數(shù)據(jù)節(jié)點(diǎn)出錯(cuò)和數(shù)據(jù)出錯(cuò)。1.名稱節(jié)點(diǎn)出錯(cuò)名稱節(jié)點(diǎn)保存了所有的元數(shù)據(jù)信息,其中,最核心的兩大數(shù)據(jù)結(jié)構(gòu)是FsImage和Editlog,如果這兩個(gè)文件發(fā)生損壞,那么整個(gè)HDFS實(shí)例將失效。因此,HDFS設(shè)置了備份機(jī)制,把這些核心文件同步復(fù)制到備份效勞器SecondaryNameNode上。當(dāng)名稱節(jié)點(diǎn)出錯(cuò)時(shí),就可以根據(jù)備份效勞器SecondaryNameNode中的FsImage和Editlog數(shù)據(jù)進(jìn)行恢復(fù)。3.5.3 數(shù)據(jù)錯(cuò)誤與恢復(fù)2.數(shù)據(jù)節(jié)點(diǎn)出錯(cuò)每個(gè)數(shù)據(jù)節(jié)點(diǎn)會(huì)定期向名稱節(jié)點(diǎn)發(fā)送“心跳”信息,向名稱節(jié)點(diǎn)報(bào)告自己的狀態(tài)當(dāng)數(shù)據(jù)節(jié)點(diǎn)發(fā)生故障,或者網(wǎng)絡(luò)發(fā)生斷網(wǎng)時(shí),名稱節(jié)點(diǎn)就無(wú)法收到來(lái)自一些數(shù)據(jù)節(jié)點(diǎn)的心跳信息,這時(shí),這些數(shù)據(jù)節(jié)點(diǎn)就會(huì)被標(biāo)記為“宕機(jī)”,節(jié)點(diǎn)上面的所有數(shù)據(jù)都會(huì)被標(biāo)記為“不可讀”,名稱節(jié)點(diǎn)不會(huì)再給它們發(fā)送任何I/O請(qǐng)求這時(shí),有可能出現(xiàn)一種情形,即由于一些數(shù)據(jù)節(jié)點(diǎn)的不可用,會(huì)導(dǎo)致一些數(shù)據(jù)塊的副本數(shù)量小于冗余因子名稱節(jié)點(diǎn)會(huì)定期檢查這種情況,一旦發(fā)現(xiàn)某個(gè)數(shù)據(jù)塊的副本數(shù)量小于冗余因子,就會(huì)啟動(dòng)數(shù)據(jù)冗余復(fù)制,為它生成新的副本HDFS和其它分布式文件系統(tǒng)的最大區(qū)別就是可以調(diào)整冗余數(shù)據(jù)的位置3.5.3 數(shù)據(jù)錯(cuò)誤與恢復(fù)3.數(shù)據(jù)出錯(cuò)網(wǎng)絡(luò)傳輸和磁盤錯(cuò)誤等因素,都會(huì)造成數(shù)據(jù)錯(cuò)誤客戶端在讀取到數(shù)據(jù)后,會(huì)采用md5和sha1對(duì)數(shù)據(jù)塊進(jìn)行校驗(yàn),以確定讀取到正確的數(shù)據(jù)在文件被創(chuàng)立時(shí),客戶端就會(huì)對(duì)每一個(gè)文件塊進(jìn)行信息摘錄,并把這些信息寫入到同一個(gè)路徑的隱藏文件里面當(dāng)客戶端讀取文件的時(shí)候,會(huì)先讀取該信息文件,然后,利用該信息文件對(duì)每個(gè)讀取的數(shù)據(jù)塊進(jìn)行校驗(yàn),如果校驗(yàn)出錯(cuò),客戶端就會(huì)請(qǐng)求到另外一個(gè)數(shù)據(jù)節(jié)點(diǎn)讀取該文件塊,并且向名稱節(jié)點(diǎn)報(bào)告這個(gè)文件塊有錯(cuò)誤,名稱節(jié)點(diǎn)會(huì)定期檢查并且重新復(fù)制這個(gè)塊3.6 HDFS數(shù)據(jù)讀寫過(guò)程3.6.1 讀數(shù)據(jù)的過(guò)程3.6.2 寫數(shù)據(jù)的過(guò)程3.6.1 讀數(shù)據(jù)的過(guò)程以下圖展示了HDFS讀數(shù)據(jù)的過(guò)程:3.6.1 讀數(shù)據(jù)的過(guò)程以下圖展示了HDFS寫數(shù)據(jù)的過(guò)程:3.7HDFS編程實(shí)踐Hadoop提供了關(guān)于HDFS在Linux操作系統(tǒng)上進(jìn)行文件操作的常用Shell命令以及JavaAPI。同時(shí)還可以利用Web界面查看和管理Hadoop文件系統(tǒng)3.7.1 HDFS常用命令HDFS有很多shell命令,其中,fs命令可以說(shuō)是HDFS最常用的命令利用該命令可以查看HDFS文件系統(tǒng)的目錄結(jié)構(gòu)、上傳和下載數(shù)據(jù)、創(chuàng)立文件等。該命令的用法為:hadoopfs[genericOptions][commandOptions]3.7.1 HDFS常用命令實(shí)例:hadoopfs-ls<path>:顯示<path>指定的文件的詳細(xì)信息hadoopfs-mkdir<path>:創(chuàng)立<path>指定的文件夾3.7.1 HDFS常用命令實(shí)例:hadoopfs-cat<path>:將<path>指定的文件的內(nèi)容輸出到標(biāo)準(zhǔn)輸出〔stdout〕hadoopfs-copyFromLocal<localsrc><dst>:將本地源文件<localsrc>復(fù)制到路徑<dst>指定的文件或文件夾中3.7.2 HDFS的Web界面在配置好Hadoop集群之后,可以通過(guò)瀏覽器登錄“://[NameNodeIP]:50070”訪問(wèn)HDFS文件系統(tǒng)3.7.3 HDFS常用JavaAPI及應(yīng)用實(shí)例HDFS常用JavaAPI〔1〕:一個(gè)通用文件系統(tǒng)的抽象基類,可以被分布式文件系統(tǒng)繼承。所有可能使用Hadoop文件系統(tǒng)的代碼都要使用到這個(gè)類〔2〕:一個(gè)接口,用于向客戶端展示系統(tǒng)中文件和目錄的元數(shù)據(jù),具體包括文件大小、塊大小、副本信息、所有者、修改時(shí)間等??赏ㄟ^(guò)FileSystem.listStatus()方法獲得具體的實(shí)例對(duì)象〔3〕:文件輸入流,用于讀取Hadoop文件3.7.3 HDFS常用JavaAPI及應(yīng)用實(shí)例〔4〕:文件輸出流,用于寫Hadoop文件〔5〕:訪問(wèn)配置項(xiàng)。所有的配置項(xiàng)的值,如果在core-site.xml中有對(duì)應(yīng)的配置,那么以core-site.xml為準(zhǔn),否那么以core-default.xml中相應(yīng)的配置項(xiàng)信息為準(zhǔn)〔6〕:用于表示Hadoop文件系統(tǒng)中的一個(gè)文件或者一個(gè)目錄的路徑〔
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 邯鄲市科技園區(qū)租賃合同
- 企業(yè)戰(zhàn)略調(diào)整適應(yīng)市場(chǎng)變化
- 鐵路運(yùn)輸安全操作指南
- 2025司法綜合案例分析想賴賬拒認(rèn)合同警告后馬上改口
- 知識(shí)產(chǎn)權(quán)保護(hù)建議實(shí)施辦法
- 電視臺(tái)新聞機(jī)租賃協(xié)議
- 城市改造破碎施工合同
- 體育健身地皮租賃協(xié)議
- 電子商務(wù)物流分層管理辦法
- 數(shù)據(jù)合規(guī)性檢查清單
- 質(zhì)控競(jìng)聘課件
- 2024年房地產(chǎn)開發(fā)商與承建商之間的工程承包合同
- 2024-2025學(xué)年高二上學(xué)期期中家長(zhǎng)會(huì)-家校同頻共話成長(zhǎng) 課件
- 語(yǔ)文-句子成分劃分名師公開課獲獎(jiǎng)?wù)n件百校聯(lián)賽一等獎(jiǎng)?wù)n件
- 班組安全爭(zhēng)先創(chuàng)優(yōu)競(jìng)賽活動(dòng)考核細(xì)則表
- 2024-2030年中國(guó)眼視光行業(yè)現(xiàn)狀態(tài)勢(shì)與未來(lái)前景預(yù)測(cè)報(bào)告
- 北京市西城區(qū)2022-2023學(xué)年高三上學(xué)期期末生物試題 附解析
- 《中文歌曲在對(duì)外漢語(yǔ)文化教學(xué)中的應(yīng)用研究》
- 小學(xué)三年級(jí)上冊(cè)數(shù)學(xué)豎式計(jì)算題大全
- 2024年云南省中考物理試題含答案
- 2023-2024學(xué)年全國(guó)小學(xué)四年級(jí)上英語(yǔ)人教版期末考試試卷(含答案解析)
評(píng)論
0/150
提交評(píng)論