Hadoop初入門(4) 分佈式文件系統:架構和設計

Namenode 和 Datanode

HDFS採用master/slave架構。一個HDFS集羣是由一個Namenode和一定數目的Datanodes組成。Namenode是一箇中心服務器,負責管理文件系統的名字空間(namespace)以及客戶端對文件的訪問。集羣中的Datanode一般是一個節點一個,負責管理它所在節點上的存儲。

HDFS暴露了文件系統的名字空間,用戶能夠以文件的形式在上面存儲數據。從內部看,一個文件其實被分成一個或多個數據塊,這些塊存儲在一組Datanode上。

Namenode執行文件系統的名字空間操作,比如打開、關閉、重命名文件或目錄。它也負責確定數據塊到具體Datanode節點的映射。

Datanode負責處理文件系統客戶端的讀寫請求。在Namenode的統一調度下進行數據塊的創建、刪除和複製。

在這裏插入圖片描述

文件系統的名字空間 (namespace)
HDFS支持傳統的層次型文件組織結構。用戶或者應用程序可以創建目錄,然後將文件保存在這些目錄裏。文件系統名字空間的層次結構和大多數現有的文件系統類似:用戶可以創建、刪除、移動或重命名文件。當前,HDFS不支持用戶磁盤配額和訪問權限控制,也不支持硬鏈接和軟鏈接。但是HDFS架構並不妨礙實現這些特性。

Namenode負責維護文件系統的名字空間,任何對文件系統名字空間或屬性的修改都將被Namenode記錄下來。應用程序可以設置HDFS保存的文件的副本數目。文件副本的數目稱爲文件的副本系數,這個信息也是由Namenode保存的。

健壯性
HDFS的主要目標就是即使在出錯的情況下也要保證數據存儲的可靠性。常見的三種出錯情況是:Namenode出錯, Datanode出錯和網絡割裂(network partitions)。

磁盤數據錯誤,心跳檢測和重新複製:

每個Datanode節點週期性地向Namenode發送心跳信號。網絡割裂可能導致一部分Datanode跟Namenode失去聯繫。Namenode通過心跳信號的缺失來檢測這一情況,並將這些近期不再發送心跳信號Datanode標記爲宕機,不會再將新的IO請求發給它們。任何存儲在宕機Datanode上的數據將不再有效。Datanode的宕機可能會引起一些數據塊的副本系數低於指定值,Namenode不斷地檢測這些需要複製的數據塊,一旦發現就啓動複製操作。在下列情況下,可能需要重新複製:某個Datanode節點失效,某個副本遭到損壞,Datanode上的硬盤錯誤,或者文件的副本系數增大。

集羣均衡

數據完整性:
具體就是檢測到DataNode的數據不完整時,從其他的數據節點進行復制。


參考:

  1. Hadoop分佈式文件系統:架構和設計
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章