日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

還不懂HDFS的工作原理?快來掃掃盲

 Baruch 2016-03-17
還不懂HDFS的工作原理?快來掃掃盲
浣氬悕  雞啄米  2016-03-17

Hadoop分布式文件系統(tǒng)(HDFS)是一種被設(shè)計成適合運行在通用硬件上的分布式文件系統(tǒng)。HDFS是一個高度容錯性的系統(tǒng),適合部署在廉價的 機器上。它能提供高吞吐量的數(shù)據(jù)訪問,非常適合大規(guī)模數(shù)據(jù)集上的應(yīng)用。要理解HDFS的內(nèi)部工作原理,首先要理解什么是分布式文件系統(tǒng)。

1、分布式文件系統(tǒng)

多臺計算機聯(lián)網(wǎng)協(xié)同工作(有時也稱為一個集群)就像單臺系統(tǒng)一樣解決某種問題,這樣的系統(tǒng)我們稱之為分布式系統(tǒng)。

分布式文件系統(tǒng)是分布式系統(tǒng)的一個子集,它們解決的問題就是數(shù)據(jù)存儲。換句話說,它們是橫跨在多臺計算機上的存儲系統(tǒng)。存儲在分布式文件系統(tǒng)上的數(shù)據(jù)自動分布在不同的節(jié)點上。

分布式文件系統(tǒng)在大數(shù)據(jù)時代有著廣泛的應(yīng)用前景,它們?yōu)榇鎯吞幚韥碜跃W(wǎng)絡(luò)和其它地方的超大規(guī)模數(shù)據(jù)提供所需的擴展能力。

2、分離元數(shù)據(jù)和數(shù)據(jù):NameNode和DataNode

存儲到文件系統(tǒng)中的每個文件都有相關(guān)聯(lián)的元數(shù)據(jù)。元數(shù)據(jù)包括了文件名、i節(jié)點(inode)數(shù)、數(shù)據(jù)塊位置等,而數(shù)據(jù)則是文件的實際內(nèi)容。

在傳統(tǒng)的文件系統(tǒng)里,因為文件系統(tǒng)不會跨越多臺機器,元數(shù)據(jù)和數(shù)據(jù)存儲在同一臺機器上。

為了構(gòu)建一個分布式文件系統(tǒng),讓客戶端在這種系統(tǒng)中使用簡單,并且不需要知道其他客戶端的活動,那么元數(shù)據(jù)需要在客戶端以外維護。HDFS的設(shè)計理念是拿出一臺或多臺機器來保存元數(shù)據(jù),并讓剩下的機器來保存文件的內(nèi)容。

NameNode和DataNode是HDFS的兩個主要組件。其中,元數(shù)據(jù)存儲在NameNode上,而數(shù)據(jù)存儲在DataNode的集群上。 NameNode不僅要管理存儲在HDFS上內(nèi)容的元數(shù)據(jù),而且要記錄一些事情,比如哪些節(jié)點是集群的一部分,某個文件有幾份副本等。它還要決定當(dāng)集群的節(jié)點宕機或者數(shù)據(jù)副本丟失的時候系統(tǒng)需要做什么。

存儲在HDFS上的每份數(shù)據(jù)片有多份副本(replica)保存在不同的服務(wù)器上。在本質(zhì)上,NameNode是HDFS的Master(主服務(wù)器),DataNode是Slave(從服務(wù)器)。

3、HDFS寫過程

NameNode負(fù)責(zé)管理存儲在HDFS上所有文件的元數(shù)據(jù),它會確認(rèn)客戶端的請求,并記錄下文件的名字和存儲這個文件的DataNode集合。它把該信息存儲在內(nèi)存中的文件分配表里。

例如,客戶端發(fā)送一個請求給NameNode,說它要將“zhou.log”文件寫入到HDFS。那么,其執(zhí)行流程如圖1所示。具體為:

第一步:客戶端發(fā)消息給NameNode,說要將“zhou.log”文件寫入。(如圖1中的①)

第二步:NameNode發(fā)消息給客戶端,叫客戶端寫到DataNode A、B和D,并直接聯(lián)系DataNode B。(如圖1中的②)

第三步:客戶端發(fā)消息給DataNode B,叫它保存一份“zhou.log”文件,并且發(fā)送一份副本給DataNode A和DataNode D。(如圖1中的③)

第四步:DataNode B發(fā)消息給DataNode A,叫它保存一份“zhou.log”文件,并且發(fā)送一份副本給DataNode D。(如圖1中的④)

第五步:DataNode A發(fā)消息給DataNode D,叫它保存一份“zhou.log”文件。(如圖1中的⑤)

第六步:DataNode D發(fā)確認(rèn)消息給DataNode A。(如圖1中的⑤)

第七步:DataNode A發(fā)確認(rèn)消息給DataNode B。(如圖1中的④)

第八步:DataNode B發(fā)確認(rèn)消息給客戶端,表示寫入完成。(如圖1中的⑥)

 

圖1 HDFS寫過程示意圖

在分布式文件系統(tǒng)的設(shè)計中,挑戰(zhàn)之一是如何確保數(shù)據(jù)的一致性。對于HDFS來說,直到所有要保存數(shù)據(jù)的DataNodes確認(rèn)它們都有文件的副本 時,數(shù)據(jù)才被認(rèn)為寫入完成。因此,數(shù)據(jù)一致性是在寫的階段完成的。一個客戶端無論選擇從哪個DataNode讀取,都將得到相同的數(shù)據(jù)。

4、HDFS讀過程

為了理解讀的過程,可以認(rèn)為一個文件是由存儲在DataNode上的數(shù)據(jù)塊組成的??蛻舳瞬榭粗皩懭氲膬?nèi)容的執(zhí)行流程如圖2所示,具體步驟為:

第一步:客戶端詢問NameNode它應(yīng)該從哪里讀取文件。(如圖2中的①)

第二步:NameNode發(fā)送數(shù)據(jù)塊的信息給客戶端。(數(shù)據(jù)塊信息包含了保存著文件副本的DataNode的IP地址,以及DataNode在本地硬盤查找數(shù)據(jù)塊所需要的數(shù)據(jù)塊ID。) (如圖2中的②)

第三步:客戶端檢查數(shù)據(jù)塊信息,聯(lián)系相關(guān)的DataNode,請求數(shù)據(jù)塊。(如圖2中的③)

第四步:DataNode返回文件內(nèi)容給客戶端,然后關(guān)閉連接,完成讀操作。(如圖2中的④)

 

圖2 HDFS讀過程示意圖

客戶端并行從不同的DataNode中獲取一個文件的數(shù)據(jù)塊,然后聯(lián)結(jié)這些數(shù)據(jù)塊,拼成完整的文件。

5、通過副本快速恢復(fù)硬件故障

當(dāng)一切運行正常時,DataNode會周期性發(fā)送心跳信息給NameNode(默認(rèn)是每3秒鐘一次)。如果NameNode在預(yù)定的時間內(nèi)沒有收到 心跳信息(默認(rèn)是10分鐘),它會認(rèn)為DataNode出問題了,把它從集群中移除,并且啟動一個進程去恢復(fù)數(shù)據(jù)。DataNode可能因為多種原因脫離 集群,如硬件故障、主板故障、電源老化和網(wǎng)絡(luò)故障等。

對于HDFS來說,丟失一個DataNode意味著丟失了存儲在它的硬盤上的數(shù)據(jù)塊的副本。假如在任意時間總有超過一個副本存在(默認(rèn)3個),故障 將不會導(dǎo)致數(shù)據(jù)丟失。當(dāng)一個硬盤故障時,HDFS會檢測到存儲在該硬盤的數(shù)據(jù)塊的副本數(shù)量低于要求,然后主動創(chuàng)建需要的副本,以達到滿副本數(shù)狀態(tài)。

6、跨多個DataNode切分文件

在HDFS里,文件被切分成數(shù)據(jù)塊,通常每個數(shù)據(jù)塊64MB~128MB,然后每個數(shù)據(jù)塊被寫入文件系統(tǒng)。同一個文件的不同數(shù)據(jù)塊不一定保存在相同的DataNode上。這樣做的好處是,當(dāng)對這些文件執(zhí)行運算時,能夠通過并行方式讀取和處理文件的不同部分。

當(dāng)客戶端準(zhǔn)備寫文件到HDFS并詢問NameNode應(yīng)該把文件寫到哪里時,NameNode會告訴客戶端,那些可以寫入數(shù)據(jù)塊的 DataNode。寫完一批數(shù)據(jù)塊后,客戶端會回到NameNode獲取新的DataNode列表,把下一批數(shù)據(jù)塊寫到新列表中的DataNode上。

【編輯推薦】

【責(zé)任編輯:Ophira TEL:(010)68476606】

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多