http://hadoop.apache.org/docs/r2.9.0/hadoop-project-dist/hadoop-hdfs/Federation.html Background HDFS有兩個主要的層: Namespace 由目錄、文件和塊組成 它支持所有的文件系統命名空間操作,比如, ...
http://hadoop.apache.org/docs/r2.9.0/hadoop-project-dist/hadoop-hdfs/Federation.html
Background
HDFS有兩個主要的層:
- Namespace
- 由目錄、文件和塊組成
- 它支持所有的文件系統命名空間操作,比如,創建、刪除、修改、查看文件或目錄
- Block Storage Service
- Block Management(在NameNode中執行)
- 管理DataNode集群中的成員
- 處理Block報告,並且維護Block的位置
- 支持block相關操作,比如,創建、刪除、修改、查看block位置
- 管理副本的位置,block的複製
- Storage
- 由DataNode來提供,存儲block到本地文件系統,並提供讀寫訪問
- Block Management(在NameNode中執行)
PS:就像圖中畫的那樣,HDFS主要包括兩方面:NameSpace和Block Storage。HDFS中有兩種類型的節點,NameNode負責NameSpace和Block Management,而DataNode負責Storage
在先前的HDFS架構中,整個集群只允許有一個namespace,一個NameNode來管理這個namespace。HDFS Federation通過支持多個NameNodes/namespaces來突破這種限制。
Multiple Namenodes/Namespaces
為了水平的擴展name服務,federation採用多個獨立的NameNodes/namespaces。NameNodes是獨立的,彼此之間不需要聯繫和協調。DataNodes被用來作為所有NameNodes的公共存儲。每一個DataNode會註冊到集群中的所有NameNode。DataNode發送周期性的心跳和block報告。它們也處理來自NameNode的命令。
用戶可能用ViewFs創建個性化的namespace views。ViewFs和Linux系統中掛載表很類似。
Block Pool
一個Block Pool是屬於某個namespace下的一系列block。DataNode存儲集群中所有block pool的塊。每一個block pool被獨立管理。一個namespace為一個新block生產Block ID的時候不需要管其它的namespace。一個NameNode失敗不會影響這個DataNode為集群中的其它NameNode提供服務。
一個Namespace和它的block pool一起被叫做“Namespace Volume”。它是一個獨立的管理單元。當一個NameNode/namespace被刪除的時候,在DataNode中與之相應的block pool也會被刪除。在集群升級的時候,每個namespace volume作為一個單元被升級。(PS:block pool是一系列的block,所以當namespace被刪除的時候,屬於這個namespace的所有block也會被刪除)