溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何從HDFS看分布式文件系統(tǒng)的設(shè)計需求

發(fā)布時間:2021-12-09 11:01:37 來源:億速云 閱讀:164 作者:小新 欄目:云計算

這篇文章主要為大家展示了“如何從HDFS看分布式文件系統(tǒng)的設(shè)計需求”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“如何從HDFS看分布式文件系統(tǒng)的設(shè)計需求”這篇文章吧。

分布式文件系統(tǒng)的設(shè)計需求大概是這么幾個:透明性、并發(fā)控制、可伸縮性、容錯以及安全需求等。我想試試從這幾個角度去觀察HDFS的設(shè)計和實現(xiàn),可以更清楚地看出HDFS的應(yīng)用場景和設(shè)計理念。

首先、透明性。如果按照開放分布式處理的標準確定就有8種透明性:訪問的透明性、位置的透明性、并發(fā)透明性、復(fù)制透明性、故障透明性、移動透明性、性能透明性和伸縮透明性。對于分布式文件系統(tǒng),最重要的是希望能達到5個透明性要求:

1)訪問的透明性:用戶能通過相同的操作來訪問本地文件和遠程文件資源。HDFS可以做到這一點,如果HDFS設(shè)置成本地文件系統(tǒng),而非分布式,那么讀寫 分布式HDFS的程序可以不用修改地讀寫本地文件,要做修改的是配置文件??梢?,HDFS提供的訪問的透明性是不完全的,畢竟它構(gòu)建于java之上,不能 像NFS或者AFS那樣去修改unix內(nèi)核,同時將本地文件和遠程文件以一致的方式處理。

2)位置的透明性:使用單一的文件命名空間,在不改變路徑名的前提下,文件或者文件集合可以被重定位。HDFS集群只有一個Namenode來負責(zé)文件系 統(tǒng)命名空間的管理,文件的block可以重新分布復(fù)制,block可以增加或者減少副本,副本可以跨機架存儲,而這一切對客戶端都是透明的。

3)移動的透明性:這一點與位置的透明性類似,HDFS中的文件經(jīng)常由于節(jié)點的失效、增加或者replication因子的改變或者重新均衡等進行著復(fù)制或者移動,而客戶端和客戶端程序并不需要改變什么,Namenode的edits日志文件記錄著這些變更。

4)性能的透明性和伸縮的透明性:HDFS的目標就是構(gòu)建在大規(guī)模廉價機器上的分布式文件系統(tǒng)集群,可伸縮性毋庸置疑,至于性能可以參考它首頁上的一些benchmark。

第二、并發(fā)控制??蛻舳藢τ谖募淖x寫不應(yīng)該影響其他客戶端對同一個文件的讀寫。要想實現(xiàn)近似原生文件系統(tǒng)的單個文件拷貝語義,分布式文件系統(tǒng)需要做出復(fù) 雜的交互,例如采用時間戳,或者類似回調(diào)承諾(類似服務(wù)器到客戶端的RPC回調(diào),在文件更新的時候;回調(diào)有兩種狀態(tài):有效或者取消??蛻舳送ㄟ^檢查回調(diào)承 諾的狀態(tài),來判斷服務(wù)器上的文件是否被更新過)。

HDFS并沒有這樣做,它的機制非常簡單,任何時間都只允許一個寫的客戶端,文件經(jīng)創(chuàng)建并寫入之后不再改 變,它的模型是write-one-read-many, 一次寫,多次讀。這與它的應(yīng)用場合是一致,HDFS的文件大小通常是兆至T級的,這些數(shù)據(jù)不會經(jīng)常修改,最經(jīng)常的是被順序讀并處理,隨機讀很少,因此 HDFS非常適合MapReduce框架或者web crawler應(yīng)用。HDFS文件的大小也決定了它的客戶端不能像某些分布式文件系統(tǒng)那樣緩存常用到的幾百個文件。

第三,文件復(fù)制功能。一個文件可以表示為其內(nèi)容在不同位置的多個拷貝。這樣做帶來了兩個好處:訪問同個文件時可以從多個服務(wù)器中獲取從而改善服務(wù)的伸縮 性,另外就是提高了容錯能力,某個副本損壞了,仍然可以從其他服務(wù)器節(jié)點獲取該文件。HDFS文件的block為了容錯都將被備份,根據(jù)配置的 replication因子來,默認是3。副本的存放策略也是很有講究,一個放在本地機架的節(jié)點,一個放在同一機架的另一節(jié)點,另一個放在其他機架上。這 樣可以最大限度地防止因故障導(dǎo)致的副本的丟失。不僅如此,HDFS讀文件的時候也將優(yōu)先選擇從同一機架乃至同一數(shù)據(jù)中心的節(jié)點上讀取block。

第四,硬件和操作系統(tǒng)的異構(gòu)性。由于構(gòu)建在java平臺上,HDFS的跨平臺能力毋庸置疑,得益于java平臺已經(jīng)封裝好的文件IO系統(tǒng),HDFS可以在不同的操作系統(tǒng)和計算機上實現(xiàn)同樣的客戶端和服務(wù)端程序。

第五,容錯能力。在分布式文件系統(tǒng)中,盡量保證文件服務(wù)在客戶端或者服務(wù)端出現(xiàn)問題的時候能正常使用是非常重要的。HDFS的容錯能力大概可以分為兩個方面:文件系統(tǒng)的容錯性以及Hadoop本身的容錯能力。文件系統(tǒng)的容錯性通過這么幾個手段:

在Namenode和Datanode之間維持心跳檢測,當由于網(wǎng)絡(luò)故障之類的原因,導(dǎo)致Datanode發(fā)出的心跳包沒有被Namenode正常收 到的時候,Namenode就不會將任何新的IO操作派發(fā)給那個Datanode,該Datanode上的數(shù)據(jù)被認為是無效的,因此Namenode會檢 測是否有文件block的副本數(shù)目小于設(shè)置值,如果小于就自動開始復(fù)制新的副本并分發(fā)到其他Datanode節(jié)點。

 檢測文件block的完整性,HDFS會記錄每個新創(chuàng)建的文件的所有block的校驗和。當以后檢索這些文件的時候,從某個節(jié)點獲取block,會首先確認校驗和是否一致,如果不一致,會從其他Datanode節(jié)點上獲取該block的副本。

集群的負載均衡,由于節(jié)點的失效或者增加,可能導(dǎo)致數(shù)據(jù)分布的不均勻,當某個Datanode節(jié)點的空閑空間大于一個臨界值的時候,HDFS會自動從其他Datanode遷移數(shù)據(jù)過來。

 Namenode上的fsimage和edits日志文件是HDFS的核心數(shù)據(jù)結(jié)構(gòu),如果這些文件損壞了,HDFS將失效。因而,Namenode可以配置成支持維護多 個FsImage和Editlog的拷貝。任何對FsImage或者Editlog的修改,都將同步到它們的副本上。它總是選取最近的一致的FsImage和Editlog使用。Namenode在HDFS是單點存在,如果Namenode所在的機器錯誤,手工的干預(yù)是必須的。

  文件的刪除,刪除并不是馬上從Namenode移出namespace,而是放在/trash目錄隨時可恢復(fù),直到超過設(shè)置時間才被正式移除。

再說Hadoop本身的容錯性,Hadoop支持升級和回滾,當升級Hadoop軟件時出現(xiàn)bug或者不兼容現(xiàn)象,可以通過回滾恢復(fù)到老的Hadoop版本。

最后一個就是安全性問題,HDFS的安全性是比較弱的,只有簡單的與unix文件系統(tǒng)類似的文件許可控制,未來版本會實現(xiàn)類似NFS的kerberos驗證系統(tǒng)。

以上是“如何從HDFS看分布式文件系統(tǒng)的設(shè)計需求”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI