Hadoop HDFS(二)結(jié)構(gòu)解析和名詞解釋

1.Hadoop HDFS架構(gòu)向?qū)У哪康?/p>

在這篇關(guān)于HDFS文章結(jié)構(gòu)的指南里始花,你可以讀到所有關(guān)于HDFS的東西。首先垄提,我們討論一下HDFS的設(shè)計理念和目標(biāo)价捧。這個結(jié)構(gòu)教程會覆蓋所有Hadoop HDFS的結(jié)構(gòu)細(xì)節(jié),比如NameNode, DataNote让蕾, 二手節(jié)點浪规,檢查節(jié)點,和備份節(jié)點探孝。HDFS的特征比如機(jī)架感知笋婿,高可用性,數(shù)據(jù)塊顿颅,復(fù)制管理缸濒,HDFS數(shù)據(jù)讀寫操作也會在這個教程中被討論到。

2.什么是Hadoop HDFS?
Hadoop 分布式文件系統(tǒng)是世界上最可靠的文件系統(tǒng)粱腻。HDFS可以再大量硬件組成的集群中存儲大文件绍填。它的設(shè)計原則是趨向于存儲少量的大文件,而不是存儲大量的小文件栖疑。即使在硬件發(fā)生故障的時候讨永,HDFS也能體現(xiàn)出它對數(shù)據(jù)存儲的可靠性。它支持高吞吐量的平行訪問方式遇革。

2.1 HDFS 的理念和目標(biāo)
I. 硬件故障
硬件故障已經(jīng)不再是異常了卿闹,它變成了一個常規(guī)現(xiàn)象。HDFS實例由成千上萬的服務(wù)機(jī)器組成萝快,這些機(jī)器中的任何一個都存儲著文件系統(tǒng)的部分?jǐn)?shù)據(jù)锻霎。這里元件的數(shù)量是龐大的,而且極可能導(dǎo)致硬件故障揪漩。這就意味著總是有一些組件不工作旋恼。所以,核心結(jié)構(gòu)的目標(biāo)是快速的自動的進(jìn)行錯誤檢測和恢復(fù)奄容。

II. 流數(shù)據(jù)訪問
HDFS 應(yīng)用需要依賴流去訪問它的數(shù)據(jù)集冰更。Hadoop HDFS的設(shè)計方向主要面向于批處理而不是用戶交互产徊。著力點在于重視數(shù)據(jù)訪問的高吞吐率而不是數(shù)據(jù)訪問的低延遲性。它注重于如何在分析日志的同時盡肯能快速的獲得數(shù)據(jù)蜀细。

III. 巨大數(shù)據(jù)集
HDFS通常需要工作在大數(shù)據(jù)集上舟铜。標(biāo)準(zhǔn)的實踐中是,HDFS系統(tǒng)中存在的文件大小范圍是GB(千兆字節(jié))到TB(兆兆字節(jié))奠衔。HDFS架構(gòu)的設(shè)計就是如果最好的存儲和獲得大量的數(shù)據(jù)谆刨。HDFS也提供高聚合數(shù)據(jù)的帶寬。它同樣應(yīng)該具備在單一集群中可以擴(kuò)展上百個節(jié)點的能力归斤。與此同時痊夭,它也應(yīng)該具備在一個單元實例中處理處理數(shù)千萬個文件的能力。

IV. 簡單的一致性模型
它工作在一次性寫入多次的讀取的理論上脏里。一旦數(shù)據(jù)被創(chuàng)建生兆、寫入和關(guān)閉,改文件是不能被修改的膝宁。這種方式解決數(shù)據(jù)一致性的問題同時也實現(xiàn)了高吞吐量訪問數(shù)據(jù)的需求鸦难。基于MapReduce的應(yīng)用和或者網(wǎng)絡(luò)爬蟲的應(yīng)用在這種模型中擁有很高的適應(yīng)性员淫。和每一apache筆記一樣合蔽,未來計劃增加追加寫入文件這一功能。

V. 轉(zhuǎn)移計算量比轉(zhuǎn)移數(shù)據(jù)更合理
如果一個應(yīng)用在它操作的數(shù)據(jù)附近進(jìn)行計算介返,總會比在離它遠(yuǎn)的地方做計算更高效拴事。這個現(xiàn)象在處理大的數(shù)據(jù)集時,往往提現(xiàn)的更明顯圣蝎。這樣做主要的優(yōu)勢體現(xiàn)在增加系統(tǒng)的總吞吐量上刃宵。它同時也最小化了網(wǎng)路阻塞。其理念是徘公,將計算移動到離數(shù)據(jù)更近的位置牲证,來代替將數(shù)據(jù)轉(zhuǎn)移到離計算更近的位置。

VI. 便捷的訪問有不同軟件和硬件組成的平臺
HDFS 被設(shè)計成便捷的在平臺之間切換关面。這讓HDFS系統(tǒng)能夠因為其適應(yīng)性而廣泛傳播坦袍。這是在處理大數(shù)據(jù)集數(shù)據(jù)的最好的平臺。

  1. 什么是HDFS的架構(gòu)等太?
    Hadoop架構(gòu)由主/從體系結(jié)構(gòu)構(gòu)成捂齐,主實體是NameNode用來儲存元數(shù)據(jù),從實體是DataNode用來實際存放數(shù)據(jù)缩抡。一個HDFS結(jié)構(gòu)包含一個NameNode奠宜,剩下的都是DataNodes.

我們下面討論一下Hadoop HDFS架構(gòu)中節(jié)點們的細(xì)節(jié)。

3.1 什么是HDFS中的NameNode?
NameNode在HDFS架構(gòu)中也被成為主節(jié)點。HDFS NameNode存儲元數(shù)據(jù)压真,比如娩嚼,數(shù)據(jù)塊的數(shù)量,副本的數(shù)量和其它的一些細(xì)節(jié)榴都。這些元數(shù)據(jù)被存放在主節(jié)點的內(nèi)存中待锈,為了達(dá)到最快速度的獲取數(shù)據(jù)漠其。NameNode 負(fù)責(zé)維護(hù)和管理從節(jié)點并且給從節(jié)點分配任務(wù)嘴高。它是整個HDFS的中心環(huán)節(jié),所以應(yīng)該將其部署在可靠性高的機(jī)器上和屎。

NameNode的任務(wù)清單:
· 管理文件系統(tǒng)命名空間
· 規(guī)定客戶端訪問文件規(guī)則
· 對文件執(zhí)行命名拴驮,關(guān)閉,打開文件或打開路徑等 操作
· 所有的數(shù)據(jù)節(jié)點發(fā)送心跳給NameNode, 它需要確保數(shù)據(jù)是否在線柴信。一個數(shù)據(jù)塊報告包含所有這個數(shù)據(jù)點上的所有block的情況套啤。
· NameNode也負(fù)責(zé)管理復(fù)制因子的數(shù)量。

文件呈現(xiàn)在NameNode元數(shù)據(jù)中如下所以:

FsImage(鏡像文件) -

FsImage在NameNode中是一個“鏡像文件”随常。它將全部的文件系統(tǒng)的命名空間保存為一個文件存儲在NameNode的本地文件系統(tǒng)中潜沦,這個文件中還包含所有的文件序列化路徑和在文件系統(tǒng)中的文件inodes,每個inode都是文件或者目錄元數(shù)據(jù)的內(nèi)部表示绪氛。

EditLogs(日志文件) -

日志文件包含所有在鏡像文件上對系統(tǒng)的最新修改唆鸡。當(dāng)NameNode從客戶端收到一個創(chuàng)建/更新/刪除請求時,這條請求會先被記錄到日志文件中枣察。

3.2 什么是HDFS DataNode?

DataNode在HDFS架構(gòu)中的從節(jié)點争占。在Hadoop HDFS架構(gòu),DataNode是實際的存儲數(shù)據(jù)節(jié)點序目。它可以執(zhí)行來自客戶端的每個讀和寫的請求臂痕。DataNodes可以部署在商品硬件上。

DataNode的任務(wù):
· 根據(jù)NameNode的指令對Block進(jìn)行復(fù)制猿涨,創(chuàng)建和刪除
· DataNode管理系統(tǒng)數(shù)據(jù)的存儲
· DataNode發(fā)送心跳給NameNode給HDFS報告其本身的確定性握童。默認(rèn)情況下3秒鐘上報一次心跳。

3.3 什么是次要NameNode?

在HDFS中叛赚,當(dāng)NameNode運(yùn)行時舆瘪,它首先從鏡像文件FsImage中讀取HDFS的狀態(tài),然后它在日志文件中讀取并執(zhí)行日志文件中的操作指令红伦。執(zhí)行完畢后將一個最新的HDFS狀態(tài)寫給鏡像文件FsImage英古。寫入狀態(tài)完畢之后,我們又得到了一個空的日志文件昙读,繼續(xù)等待日常操作的記錄召调。 在啟動時,NameNode會將鏡像文件和日志文件融合,因此隨著時間的推移唠叛,日志文件可能會變得非常大只嚣。擁有較大的日志文件的后果是在下一次重新啟動Namenode時需要更長的時間。

次要NameNode的產(chǎn)生就是為了解決這個問題艺沼,次要NameNode從NameNode下載FsImage和EditLogs册舞。然后將EditLogs和FsImage進(jìn)行融合。它給日志文件的大小一個限制障般。它將融合后的FsImage文件存儲在一個永久存儲器中调鲸。我們可以在NameNode出現(xiàn)故障的時候使用它。

次要NameNode在HDFS中起到一個常規(guī)檢查點的作用挽荡。

3.4 什么是檢查點節(jié)點藐石?

檢查節(jié)點是一個定期在命名空間創(chuàng)建檢查點的節(jié)點。在Hadoop中的檢查點先從活動的Namenode中下載FsImage文件和日志文件定拟,它在本地將兩個文件進(jìn)行融合于微,然后上傳新的鏡像給活動NameNode。它存儲最后的檢查點的結(jié)構(gòu)青自,所以它的路徑結(jié)構(gòu)應(yīng)該跟NameNode的路徑結(jié)構(gòu)一樣株依。讀取檢查點鏡像的權(quán)限,如果有必要應(yīng)該一直為NameNode開放延窜。

3.5 什么是備份節(jié)點恋腕?

備份節(jié)點也提供和檢查節(jié)點一樣的檢查功能。在Hadoop中需曾,Backup節(jié)點保留內(nèi)存中最新文件系統(tǒng)命名空間的副本吗坚。它和NameNode的狀態(tài)總是同步的。在HDFS架構(gòu)中的備份節(jié)點不需要從活動的NameNode中下載FsImage和它日志文件去創(chuàng)建檢查點呆万。它在內(nèi)存中已經(jīng)擁有了最新的命名空間狀態(tài)商源。備份節(jié)點的檢查點流程比起檢查節(jié)點的檢查流程效率更高,因為它只需要保存命名空間到本地鏡像文件和重置日志文件就夠了谋减。NameNode一次只支持一個備份節(jié)點牡彻。

3.6 HDFS架構(gòu)中的Blocks是什么?

HDFS將巨大的文件分割成小的文件塊出爹,這種文件塊就叫Blocks. 這些Blocks是文件系統(tǒng)中最小的數(shù)據(jù)單元庄吼。客戶端或者管理員严就,不需要控制這些blocks的存儲位置总寻,由NameNode決定類似的事情。

默認(rèn)的HDFS block大小為128MB梢为,當(dāng)然這值可以根據(jù)不同需求而改變渐行。一個文件除了最后一個block其他block的大小都是相同的轰坊,最后一個文件的大小可以是128MB,也可以更小祟印。如果數(shù)據(jù)的大小比block默認(rèn)值的大小小的話肴沫,block大小就會等于數(shù)據(jù)的大小。例如一個數(shù)據(jù)的大小為129MB蕴忆,則系統(tǒng)會為這個數(shù)據(jù)創(chuàng)建兩個Block一個大小為128MB,另一個大小只為1MB. 存儲成這樣的好處是颤芬,既可以節(jié)省空間,有可以節(jié)省查詢時間套鹅。

3.7 什么是復(fù)制管理站蝠?

Block復(fù)制支持容錯機(jī)制。如果一個副本不能被訪問或者損壞芋哭,我們可以從其他的副本中讀取數(shù)據(jù)沉衣。在HDFS架構(gòu)中一個文件的副本數(shù)量叫做復(fù)制因子郁副。默認(rèn)的復(fù)制因子為3减牺,可以通過修改配置文件修改復(fù)制因子。當(dāng)復(fù)制因子為3的時候每個block會被存放在3個不同的DataNode中存谎。

如果一個文件是128MB拔疚,根據(jù)默認(rèn)配置它將占用384MB的系統(tǒng)空間存儲。

NameNode通過從DataNode定期接收數(shù)據(jù)塊上報去維護(hù)復(fù)制因子既荚,當(dāng)一個數(shù)據(jù)塊過多復(fù)制或者復(fù)制不足稚失,則NameNode負(fù)責(zé)根據(jù)需要增加或刪除副本。

3.8 什么是HDFS架構(gòu)中的機(jī)架感知恰聘?

在大型的Hadoop集群中句各,為了提高讀、寫HDFS文件的效率晴叨,NameNode都是按就近原則選擇數(shù)據(jù)節(jié)點的凿宾,一般的都是選擇相同機(jī)架的DataNode或者是鄰近機(jī)架的DataNode去讀、寫數(shù)據(jù)兼蕊。NameNode通過為維護(hù)每個數(shù)據(jù)節(jié)點的機(jī)架ID來獲取機(jī)架信息初厚。機(jī)架感知在hadoop中是一個有機(jī)架信息來獲取數(shù)據(jù)節(jié)點的概念。

在HDFS架構(gòu)中孙技, NameNode必須確保所有的副本不存放在相同機(jī)架或者單一機(jī)架中产禾。它遵循機(jī)架感知算法來減少延遲和提高容錯。我們知道默認(rèn)的復(fù)制因子為3牵啦。根據(jù)機(jī)架感知算法亚情,一個數(shù)據(jù)塊的第一個副本會存儲在本地機(jī)架上,第二個副本會存儲在同一個機(jī)架的不同DataNode上哈雏,第三個副本會存儲在Hadoop集群中的不同機(jī)架上楞件。

機(jī)架感知對于提升一下方面有著重要作用:
· 數(shù)據(jù)高可用性和可靠性
· 集群的表現(xiàn)
· 提升網(wǎng)絡(luò)帶寬

3.9 HDFS讀拌夏、寫操作

3.9.1 寫操作

當(dāng)客戶端想寫入一個文件到HDFS中時,它與NameNode進(jìn)行交互履因,索取元數(shù)據(jù)障簿。NameNode根據(jù)請求,返回一定數(shù)量的blocks和他們的位置栅迄,副本和其他的信息給客戶端站故。根據(jù)從NameNode獲取的信息,客戶端將文件分割成多個blocks毅舆,然后開始講這些blocks發(fā)送給第一個數(shù)據(jù)節(jié)點西篓。

客戶端首先向DataNode 1發(fā)送block A和其它個數(shù)據(jù)節(jié)點的信息。當(dāng)DataNode 1收到從客戶端發(fā)來的block A憋活,它復(fù)制相同的block給同一機(jī)架上DataNode 2岂津。由于這兩個數(shù)據(jù)節(jié)點在同一個機(jī)架上,所以數(shù)據(jù)塊傳遞通過機(jī)架開關(guān)≡眉矗現(xiàn)在DataNode 2復(fù)制同樣的block給DataNode 3吮成,因為這兩個數(shù)據(jù)節(jié)點在不同的機(jī)架上,所以兩者之間的塊傳輸通過一個機(jī)架外開關(guān)辜梳。

當(dāng)DataNode收到從客戶端傳遞過來的Blocks,它會發(fā)送給NameNode一個確認(rèn)信息粱甫。這個過程會持續(xù)重復(fù),直到這個文件每一個block被發(fā)完作瞄。

3.9.2 讀操作

從HDFS中讀取文件茶宵,客戶端也需要跟NameNode通訊請求元數(shù)據(jù)∽诨樱客戶端給出文件名稱和它自身的地址乌庶,NameNode響應(yīng)請求并返回blocks的數(shù)量、位置契耿、副本等其他信息瞒大。

現(xiàn)在客戶端直接跟數(shù)據(jù)節(jié)點進(jìn)行通訊,客戶端開始平行的從NameNode提供的數(shù)據(jù)節(jié)點上讀取數(shù)據(jù)宵喂。當(dāng)客戶端或者應(yīng)用收到所以的blocks的時候糠赦,它將這些數(shù)據(jù)塊還原成原始的文件形態(tài)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末锅棕,一起剝皮案震驚了整個濱河市拙泽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌裸燎,老刑警劉巖顾瞻,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異德绿,居然都是意外死亡荷荤,警方通過查閱死者的電腦和手機(jī)退渗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蕴纳,“玉大人会油,你說我怎么就攤上這事」琶” “怎么了翻翩?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長稻薇。 經(jīng)常有香客問我嫂冻,道長,這世上最難降的妖魔是什么塞椎? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任桨仿,我火速辦了婚禮,結(jié)果婚禮上案狠,老公的妹妹穿的比我還像新娘服傍。我一直安慰自己,他們只是感情好莺戒,可當(dāng)我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布伴嗡。 她就那樣靜靜地躺著急波,像睡著了一般从铲。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上澄暮,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天名段,我揣著相機(jī)與錄音,去河邊找鬼泣懊。 笑死伸辟,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的馍刮。 我是一名探鬼主播信夫,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼卡啰!你這毒婦竟也來了静稻?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤匈辱,失蹤者是張志新(化名)和其女友劉穎振湾,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體亡脸,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡押搪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年树酪,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片大州。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡续语,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出厦画,到底是詐尸還是另有隱情绵载,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布苛白,位于F島的核電站娃豹,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏购裙。R本人自食惡果不足惜懂版,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望躏率。 院中可真熱鬧躯畴,春花似錦、人聲如沸薇芝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽夯到。三九已至嚷缭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間耍贾,已是汗流浹背阅爽。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留荐开,地道東北人付翁。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像晃听,于是被迫代替她去往敵國和親百侧。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 首先能扒,我們在使用前先看看HDFS是什麼佣渴?這將有助于我們是以后的運(yùn)維使用和故障排除思路的獲得。 HDFS采用mast...
    W_Bousquet閱讀 4,204評論 0 2
  • 先思考問題 我們處在一個大數(shù)據(jù)的時代已經(jīng)是不爭的事實赫粥,這主要表現(xiàn)在數(shù)據(jù)源多且大观话,如互聯(lián)網(wǎng)數(shù)據(jù),人們也認(rèn)識到數(shù)據(jù)里往...
    墻角兒的花閱讀 7,373評論 0 9
  • 我對Python裝飾器的理解就是用一個函數(shù)去修飾另外一個函數(shù)越平。 裝飾器 在運(yùn)行原來功能的基礎(chǔ)上频蛔,添加一些新的功能...
    敢夢敢當(dāng)閱讀 264評論 0 1
  • “予于近人,獨(dú)服曾文正∪玻” “曾公乃國人精神之典范狞换。” 這兩句話分別出在毛澤東和蔣介石之口舟肉,卻同時點到了一個人——...
    濁酒一壺慰風(fēng)塵閱讀 541評論 2 6
  • 我們的人生都有起落 人生起落是常態(tài)路媚,要坦然面對 不要說命運(yùn)總與我們作對 其實是我們對事物的看法 決定了此時是起還是...
    檬然一笑閱讀 490評論 0 0