HDFS Federation

在Hadoop 2.0以前,也有若干技術試圖解決單點故障的問題:html

Secondary NameNode。node

它不是HA,它只是階段性的合併edits和fsimage,以縮短集羣啓動的時間。apache

當NameNode失效的時候,Secondary NN並沒有法馬上提供服務,Secondary NN甚至沒法保證數據完整性:安全

若是NN數據丟失的話,在上一次合併後的文件系統的改動會丟失。架構


Backup NameNode 。oop

它在內存中複製了NN的當前狀態,算是Warm Standby,可也就僅限於此,並無failover等。性能

它一樣是階段性的作checkpoint,也沒法保證數據完整性。spa


手動把name.dir指向NFS。安全的Cold Standby,能夠保證元數據不丟失,但集羣的恢復則徹底靠手動。htm


單NN的架構使得HDFS在集羣擴展性和性能上都有潛在的問題,當集羣大到必定程度後,NN進程使用的內存可能會達到上百G,經常使用的估算公式爲1G對應1百萬個塊,按缺省塊大小計算的話,大概是64T。同時,全部的元數據信息的讀取和操做都須要與NN進行通訊,譬如客戶端的addBlock、getBlockLocations,還有DataNode的blockRecieved、sendHeartbeat、blockReport,在集羣規模變大後,NN成爲了性能的瓶頸。blog


HDFS Federation是爲解決HDFS單點故障而提出的NameNode水平擴展方案。

容許HDFS建立多個NameSpace以提升集羣擴展性和隔離性。

當前HDFS包含兩層結構: 

(1) Namespace 管理目錄,文件和數據塊。它支持常見的文件系統操做,如建立文件,修改文件,刪除文件等。 

(2)Block Storage有兩部分組成: Block Management維護集羣中datanode的基本關係,它支持數據塊相關的操做,如:建立數據塊,刪除數據塊等,同時,它也會管理副本的複製和存放。 Physical Storage存儲實際的數據塊並提供針對數據塊的讀寫服務。


HDFS架構只容許整個集羣中存在一個namespace,而該namespace被僅有的一個namenode管理。這個架構使得HDFS很是容易實現,可是,它(見上圖)在具體實現過程當中會出現一些模糊點,進而致使了不少侷限性


參考文獻:

[0]  HDFS Federation

https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/Federation.html

[1]  An Introduction to HDFS Federation

http://zh.hortonworks.com/blog/an-introduction-to-hdfs-federation/

相關文章
相關標籤/搜索