hadoop實戰隨筆_0718

HDFS中塊的大小固定,這樣它就簡化了存儲系統的管理,特別是元數據信息可以和文件塊內容分開存儲。

塊更有利於分佈式文件系統中複製容錯的實現。


HDFS體系結構中有兩類節點,一類是NameNode,另一類是DataNode,這兩類節點分別承擔MasterWorker的任務。NameNode就是Master管理集羣中的執行調度,DataNode就是Worker具體任務的執行節點。

NameNode管理文件系統的命名空間,維護整個文件系統的文件目錄樹及這些文件的索引目錄。這些信息以兩種形式存儲在本地文件系統中個,一種是命名空間鏡像,一種是編輯日誌。從NameNode中你可以獲得每個每個文件的每個塊所在的DataNode,這些信息不是永久保存的,NameNode會在系統每次啓動動態創建這些信息。

任務運行時,客服端通過NameNode獲取元數據信息,和DataNode進行交互以訪問整個文件系統。系統會提供一個類似於POSIX的文件接口,這樣用戶在編程時無需考慮NameNodeDataNode的具體功能。

DataNode是文件系統Worker 的節點,用來執行具體的任務:存儲文件塊,被客戶端和NameNode調用。同時它會通過心跳定時向NameNode發送所存儲的文件塊信息。


HDFS體系結構

HDFS採用master/slave架構對文件系統進行管理。一個HDFS集羣是由一個NameNode和一定數目的DataNode組成的。

NameNode是一箇中心服務器,負責管理文件系統的名字空間及對客戶端文件的訪問。

集羣中DataNode一般是一個節點運行一個dataNode進程,負責管理它所在節點上的存儲。HDFS展示了文件系統的名字空間,用戶能夠以文件的形式在上面存儲數據。從內部看,一個文件其實被分成了一個或多個數據塊,這些塊存儲在一組DataNode上。NameNode執行文件系統 的名字空間操作,比如打開、關閉、重命名文件或目錄。它也負責數據塊到具體DataNode節點的映射。DataNode負責處理文件系統客服端的讀/寫請求。在NameNode的統一調度下進行數據塊的創建、刪除和複製。


副本存放與讀取策略:


安全模式:NameNode啓動後會進入一個稱爲安全模式的特殊狀態。處於安全模式的NameNode是不會進行數據塊的複製的。NameNode從所有的DataNode上接受心跳信號和塊狀態報告。

塊狀態報告包括了某個DataNode所有的數據塊列表。每個數據塊都有一個指定的最小副本數。

NameNode檢測確認某個數據塊的副本數目達到最小值時,那麼該數據虧啊就會被認爲是副本安全的,在一定百分比(這個參數可配置)的數據塊被NameNode檢測確認安全後(再等待30秒),NameNode將退出安全模式狀態。接下來他會確定還有哪些數據塊的副本沒有達到註定數目,並將這些數據塊複製到其他DataNode上。


Hadoop採用那種極致來確保NameNode的安全:

1、備份NameNode上持久化存儲的元數據文件,然後將其轉儲到其他文件系統中,這種轉儲是同步的、原子的操作。通常的實現方法是,將NameNode中的元數據轉儲到遠程的NFS文件系統中。

2、系統中同步運行一個Secondary NameNode(二級NameNode),這個節點的主要作用就是週期性的合併編輯日誌中的而命名空間鏡像,以避免編輯日誌過大。

Secondary NameNode的運行通常需要大量的CPU和內存去做合併操作,這就要求其運行在一臺單獨的機器上。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章