HDFS主要有兩層: node
1 Namespace 架構
(1)由目錄、文件及塊組成 oop
(2)它支持全部依賴於命名空間的文件系統操做如 建立、刪除、修改和列出文件及目錄。 性能
2 Block Storage Service spa
(1)塊管理(上版本的Namenode已經實現) 翻譯
1)經過處理datanode註冊和定時心跳來提供datanode集羣成員身份 server
2) 處理塊報告和維護塊位置 ip
3) 支持塊相關的操做 如 建立、刪除、修改和得到塊位置。 hadoop
4) 管理正在複製的塊的備份放置和塊的複製過程,刪除多餘的複製塊。 部署
(2)存儲-經過datanodes在本地文件系統存儲塊及讀寫訪問實現。
上一版本的HDFS集羣架構僅容許整個集羣有一個單一的namespace。一個單一的namenode管理namespace。HDFS Federation 經過添加HDFS文件系統對多個Namenodes/namespaces的支持來解決上一版本的架構限制。
爲了水平擴展name server,federation使用多個獨立的Namenodes/namespaces。Namenodes是聯邦的,就是說,namenode們之間是獨立的而且不須要互相協調。對全部namenode,datanode都被用來作普通塊存儲。每個datanode在這個集羣全部的namenode中註冊。datanode發動週期心跳、塊報告,處理namenode們發來的命令。
1 Block Pool
Block Pool是指屬於一個namespace的全部塊的集合。Datanode們爲集羣中的全部block pool存儲塊。block pool的管理是獨立的。這樣,namespace能夠在爲新塊產生塊id時不考慮與其餘namespace的互相協調。一個namenode的失效不會影響datanode服務集羣中的其餘namanode。
namespace和它的的block pool一塊兒被稱爲Namespace volume。它是一個完備的管理單元。當一個Namenode/namespace被刪除時,在datanode中關聯的block pool也會被刪除。在集羣升級期間,每一個namespace volume做爲一個單元來升級。
2 ClusterID
加入新的標識符ClusterID來標識集羣的全部節點。格式化namespace時,要提供或者自動產生這個標識符。這個ID應該用於格式其餘 Namenodes 到該羣集。
主要優勢
(1) namespace可擴展 - HDFS 集羣 存儲能夠水平擴展而namespace不能夠。大型部署或使用多個小文件部署受益於水平擴展namespace,而水平擴展namespace經過往集羣中添加多個namenode實現。
(2)性能。在上個版本中文件系統的吞吐量因爲單點而受限。往集羣中添加更多的Namenode擴展了文件系統的讀寫吞吐量。
(3)隔離。單一namenode不提供在多用戶環境下的隔離。一個試驗應用可使namenode超載並使關鍵應用的運行變慢。在多namenode狀況下,不一樣種類的應用和用戶能夠被隔離在不一樣的namespace。