Chapter3-廈門大學(xué)-林子雨-大數(shù)據(jù)技術(shù)原理與應(yīng)用-第三章-分布式文件系統(tǒng)HDFS_第1頁
Chapter3-廈門大學(xué)-林子雨-大數(shù)據(jù)技術(shù)原理與應(yīng)用-第三章-分布式文件系統(tǒng)HDFS_第2頁
Chapter3-廈門大學(xué)-林子雨-大數(shù)據(jù)技術(shù)原理與應(yīng)用-第三章-分布式文件系統(tǒng)HDFS_第3頁
Chapter3-廈門大學(xué)-林子雨-大數(shù)據(jù)技術(shù)原理與應(yīng)用-第三章-分布式文件系統(tǒng)HDFS_第4頁
Chapter3-廈門大學(xué)-林子雨-大數(shù)據(jù)技術(shù)原理與應(yīng)用-第三章-分布式文件系統(tǒng)HDFS_第5頁
已閱讀5頁,還剩34頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

廈門大學(xué)計(jì)算機(jī)科學(xué)系2015年版林子雨廈門大學(xué)計(jì)算機(jī)科學(xué)系主頁:

第三章分布式文件系統(tǒng)HDFS

〔PPT版本號(hào):2015年6月第1.0版〕《大數(shù)據(jù)技術(shù)原理與應(yīng)用》溫馨提示:編輯幻燈片母版,可以修改每頁P(yáng)PT的廈大?;蘸偷撞课淖痔峋V3.1分布式文件系統(tǒng)3.2HDFS簡介3.3HDFS相關(guān)概念3.4HDFS體系結(jié)構(gòu)3.5HDFS存儲(chǔ)原理3.6HDFS大數(shù)據(jù)讀寫過程3.7 HDFS編程實(shí)踐歡送訪問《大數(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)上,成千上萬的計(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:具備訪問透明性、位置透明性和伸縮透明性

HDFS實(shí)現(xiàn)情況:只能提供一定程度的訪問透明性,完全支持位置透明性和伸縮透明性●并發(fā)控制含義:客戶端對(duì)于文件的讀寫不應(yīng)該影響其他客戶端對(duì)同一個(gè)文件的讀寫

HDFS實(shí)現(xiàn)情況:機(jī)制非常簡單,任何時(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語言開發(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)問題的時(shí)候能正常使用HDFS實(shí)現(xiàn)情況:具有多副本機(jī)制和故障自動(dòng)檢測(cè)、恢復(fù)機(jī)制3.2 HDFS簡介總體而言,HDFS要實(shí)現(xiàn)以下目標(biāo):●兼容廉價(jià)的硬件設(shè)備●流數(shù)據(jù)讀寫●大數(shù)據(jù)集●簡單的文件模型●強(qiáng)大的跨平臺(tái)兼容性HDFS特殊的設(shè)計(jì),在實(shí)現(xiàn)上述優(yōu)良特性的同時(shí),也使得自身具有一些應(yīng)用局限性,主要包括以下幾個(gè)方面:●不適合低延遲數(shù)據(jù)訪問●無法高效存儲(chǔ)大量小文件●不支持多用戶寫入及任意修改文件3.3.1 塊HDFS采用抽象的塊概念可以帶來以下幾個(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ǔ)容量●簡化系統(tǒng)設(shè)計(jì):首先,大大簡化了存儲(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)度來進(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ì)文件的訪問。集群中的數(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)磁盤配額和文件訪問權(quán)限等功能,也不支持文件的硬連接和軟連接〔快捷方式〕3.4.3 通信協(xié)議HDFS是一個(gè)部署在集群上的分布式文件系統(tǒng),因此,很多數(shù)據(jù)需要通過網(wǎng)絡(luò)進(jìn)行傳輸所有的HDFS通信協(xié)議都是構(gòu)建在TCP/IP協(xié)議根底之上的客戶端通過一個(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)的交互是通過RPC〔RemoteProcedureCall〕來實(shí)現(xiàn)的。在設(shè)計(jì)上,名稱節(jié)點(diǎn)不會(huì)主動(dòng)發(fā)起RPC,而是響應(yīng)來自客戶端和數(shù)據(jù)節(jié)點(diǎn)的RPC請(qǐng)求3.4.4 客戶端客戶端是用戶操作HDFS最常用的方式,HDFS在部署時(shí)都提供了客戶端。不過需要說明的是,嚴(yán)格來說,客戶端并不算是HDFS的一局部??蛻舳丝梢灾С址_、讀取、寫入等常見的操作,并且提供了類似Shell的命令行方式來訪問HDFS中的數(shù)據(jù)〔參見第節(jié)〕。此外,HDFS也提供了JavaAPI,作為應(yīng)用程序訪問文件系統(tǒng)的客戶端編程接口〔參見第節(jié)〕3.4.5 HDFS體系結(jié)構(gòu)的局限性HDFS只設(shè)置唯一一個(gè)名稱節(jié)點(diǎn),這樣做雖然大大簡化了系統(tǒng)設(shè)計(jì),但也帶來了一些明顯的局限性,具體如下:〔1〕命名空間的限制:名稱節(jié)點(diǎn)是保存在內(nèi)存中的,因此,名稱節(jié)點(diǎn)能夠容納的對(duì)象〔文件、塊〕的個(gè)數(shù)會(huì)受到內(nèi)存空間大小的限制。〔2〕性能的瓶頸:整個(gè)分布式文件系統(tǒng)的吞吐量,受限于單個(gè)名稱節(jié)點(diǎn)的吞吐量。〔3〕隔離問題:由于集群中只有一個(gè)名稱節(jié)點(diǎn),只有一個(gè)命名空間,因此,無法對(duì)不同應(yīng)用程序進(jìn)行隔離。〔4〕集群的可用性:一旦這個(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來確定客戶端和這些數(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ù)制過程的效率當(dāng)客戶端要往HDFS中寫入一個(gè)文件時(shí),這個(gè)文件會(huì)首先被寫入本地,并被切分成假設(shè)干個(gè)塊,每個(gè)塊的大小是由HDFS的設(shè)定值來決定的每個(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)就無法收到來自一些數(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ù)讀寫過程3.6.1 讀數(shù)據(jù)的過程3.6.2 寫數(shù)據(jù)的過程3.6.1 讀數(shù)據(jù)的過程以下圖展示了HDFS讀數(shù)據(jù)的過程:3.6.1 讀數(shù)據(jù)的過程以下圖展示了HDFS寫數(shù)據(jù)的過程: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命令可以說是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集群之后,可以通過瀏覽器登錄“://[NameNodeIP]:50070”訪問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í)間等??赏ㄟ^FileSystem.listStatus()方法獲得具體的實(shí)例對(duì)象〔3〕:文件輸入流,用于讀取Hadoop文件3.7.3 HDFS常用JavaAPI及應(yīng)用實(shí)例〔4〕:文件輸出流,用于寫Hadoop文件〔5〕:訪問配置項(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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論