設定檔案副本數 分布式檔案系統HDFS

2021-10-14 11:57:58 字數 2698 閱讀 2640

執行在大量廉價商用機器上:硬體錯誤是常態,提供容錯機制簡單一致性模型:一次寫入多次讀取,支援追加,不允許修改,保證資料一致性流式資料訪問:批量讀而非隨機讀,關注吞吐量而非時間儲存大規模資料集:典型檔案大小gb~tb,關注橫向線性擴充套件

hdfs (hadoop distributed file system)是 hadoop 下的分布式檔案系統,具有高容錯、高吞吐量等特性,可以部署在低成本的硬體上。

hdfs 遵循主/從架構,由單個 namenode(nn) 和多個 datanode(dn) 組成:

namenode元資料檔案

fsimage(元資料檢查點映象檔案):儲存了檔案系統中所有的目錄和檔案資訊,如:某個目錄下有哪些子目錄和檔案,以及檔名、檔案副本數、檔案由哪些block組成等

active namenode記憶體中有乙份最新的元資料(= fsimage + edits)

standby namenode在檢查點定期將記憶體中的元資料儲存到fsimage檔案中

datanode

block資料塊

clienthdfs 的檔案系統命名空間的層次結構與大多數檔案系統類似 (如 linux), 支援目錄和檔案的建立、移動、刪除和重新命名等操作,支援配置使用者和訪問許可權,但不支援硬鏈結和軟連線。namenode 負責維護檔案系統命名空間,記錄對命名空間或其屬性的任何更改。

由於 hadoop 被設計執行在廉價的機器上,這意味著硬體是不可靠的,為了保證容錯性,hdfs 提供了資料複製機制。hdfs 將每乙個檔案儲存為一系列塊,每個塊由多個副本來保證容錯,塊的大小和複製因子可以自行配置(預設情況下,塊大小是 128m,預設複製因子是 3)。

block儲存

block副本放置策略

大型的 hdfs 例項在通常分布在多個機架的多台伺服器上,不同機架上的兩台伺服器之間通過交換機進行通訊。在大多數情況下,同一機架中的伺服器間的網路頻寬大於不同機架中的伺服器之間的頻寬。因此 hdfs 採用機架感知副本放置策略,對於常見情況,當複製因子為 3 時,hdfs 的放置策略是:

在寫入程式位於 datanode 上時,就優先將寫入檔案的乙個副本放置在該 datanode 上,否則放在隨機 datanode 上。之後在另乙個遠端機架上的任意乙個節點上放置另乙個副本,並在該機架上的另乙個節點上放置最後乙個副本。此策略可以減少機架間的寫入流量,從而提高寫入效能。

如果複製因子大於 3,則隨機確定第 4 個和之後副本的放置位置,同時保持每個機架的副本數量低於上限,上限值通常為 (複製係數 - 1)/機架數量 + 2,需要注意的是不允許同乙個 datanode 上具有同乙個塊的多個副本。

block檔案為了最大限度地減少頻寬消耗和讀取延遲,hdfs 在執行讀取請求時,優先讀取距離讀取器最近的副本。如果在與讀取器節點相同的機架上存在副本,則優先選擇該副本。如果 hdfs 群集跨越多個資料中心,則優先選擇本地資料中心上的副本。

心跳機制和重新複製

每個 datanode 定期向 namenode 傳送心跳訊息,如果超過指定時間沒有收到心跳訊息,則將 datanode 標記為死亡。namenode 不會將任何新的 io 請求**給標記為死亡的 datanode,也不會再使用這些 datanode 上的資料。 由於資料不再可用,可能會導致某些塊的複製因子小於其指定值,namenode 會跟蹤這些塊,並在必要的時候進行重新複製。

資料的完整性

由於儲存裝置故障等原因,儲存在 datanode 上的資料塊也會發生損壞。為了避免讀取到已經損壞的資料而導致錯誤,hdfs 提供了資料完整性校驗機制來保證資料的完整性,具體操作如下:

當客戶端建立 hdfs 檔案時,它會計算檔案的每個塊的校驗和,並將校驗和儲存在同一hdfs 命名空間下的單獨的隱藏檔案中。當客戶端檢索檔案內容時,它會驗證從每個 datanode 接收的資料是否與儲存在關聯校驗和檔案中的校驗和匹配。如果匹配失敗,則證明資料已經損壞,此時客戶端會選擇從其他 datanode 獲取該塊的其他可用副本。

元資料的磁碟故障

元資料的兩種儲存形式

edits(編輯日誌檔案)

fsimage(元資料映象檢查點檔案)

fsimage 和 editlog 是 hdfs 的核心資料,這些資料的意外丟失可能會導致整個 hdfs 服務不可用。為了避免這個問題,可以配置 namenode 使其支援 fsimage 和 editlog 多副本同步,這樣 fsimage 或 editlog 的任何改變都會引起每個副本 fsimage 和 editlog 的同步更新。

支援快照

快照支援在特定時刻儲存資料副本,在資料意外損壞時,可以通過回滾操作恢復到健康的資料狀態。

分布式檔案系統

分布式檔案系統 概述 系統管理員可以利用分布式檔案系統 dfs 使使用者訪問和管理那些物理上跨網路分布的檔案更加容易。通過 dfs,可以使分布在多個伺服器上的檔案在使用者面前顯示時,就如同位於網路上的乙個位置。使用者在訪問檔案時不再需要知道和指定它們的實際物理位置。例如,如果您的銷售資料分散在某個域...

分布式檔案系統

常見的分布式檔案系統有,gfs hdfs lustre ceph gridfs mogilefs tfs fastdfs等。各自適用於不同的領域。它們都不是系統級的分布式檔案系統,而是應用級的分布式檔案儲存服務。google學術 這是眾多分布式檔案系統的起源 google file system 大...

分布式檔案系統

缺點是檔案路徑是一致的,只能用於嵌入式檔案的儲存,沒有辦法作為系統請求檔案的儲存,不過對於web2.0可以從設計層面進行一些改善,將使用者的資料互動更多地方在伺服器端,而不是資料庫中,比如使用者的文章就在 com yyy裡面,但是這又帶來一些新的問題,檔案同步負載均衡等問題。現在著眼於將自製的web...