Federation即為“聯(lián)邦”遵班,該特性允許一個HDFS集群中存在多個NameNode同時對外提供服務,這些NameNode分管一部分目錄(水平切分),彼此之間相互隔離馒胆,但共享底層的DataNode存儲資源。
單namenode架構的局限性
1.NameSpace(命名空間的限制)
由于Namenode再內存中存儲所有的元數(shù)據(jù)(metadata)凝果,因此單個Namenode所能存儲的對象(文件+塊)數(shù)目收到Namenode所在JVM的heap(堆) size的限制祝迂。
2.性能的瓶頸
由于是單個Namenode的HDFS架構,因此整個HDFS文件系統(tǒng)的吞吐量受限于單個NameNode的吞吐量器净。
3.隔離問題
由于HDFS僅有一個Namenode型雳,無法隔離各個程序,因此HDFS上的一個實驗程序很可能影響整個HDFS上運行的程序山害。
4.集群的可用性
在只有一個Namenode的HDFS中纠俭,此Namenode的宕機無疑會導致整個集群的不可用。(低可用性)
為什么縱向擴展目前的NameNode不可行浪慌?
比如將NameNode的Heap空間擴大到512GB冤荆。
1.啟動問題,啟動花費時間太長眷射。(Hadoop 1.x具有50GB Heap Namenode的HDFS啟動一次大概需要30分鐘到2小時)
2.Namenode在Full GC時匙赞,如果發(fā)生錯誤將會導致整個集群宕機佛掖。
3.對大JVM Heap進行調試比較困難。優(yōu)化Namenode的內存使用性價比比較低涌庭。
hadoop2.x
增加了Federation的概念
為什么要引入Federation
1.采用Federation的最主要的原因是簡單芥被,F(xiàn)ederation能夠快速的解決大部分單Namenode的問題。
2.Federation是簡單魯棒的設計坐榆,由于聯(lián)邦中各個Namenode之間是相互獨立的拴魄。Federation整個核心設實現(xiàn)大概用了3.5個月。大部分改變是在Datanode席镀、Config和Tools匹中,而Namenode本身的改動非常少,這樣Namenode的原先的魯棒性不會受到影響豪诲。比分布式的Namenode簡單顶捷,雖然這種事先的擴展性比起真正的分布式的Namenode要小些,但是可以迅速滿足需求屎篱。
3.Federation良好的向后兼容性服赎,已有的單Namenode的部署配置不需要任何改變就可以繼續(xù)工作。
Federation的主要優(yōu)點
1.namespace是一個可擴展的交播,相當于namenode是一個分布式的重虑。
2.性能提升了,操作不會由于一個namenode的吞吐量收到限制秦士。
3.隔離性缺厉。每個namenode只管理一部分文件 。不同用戶可以被namespace隔離隧土。