Hadoop之NameNode Federation圖文詳解
一. 前言
1.NameNode架構(gòu)的局限性
(1)Namespace(命名空間)的限制
由于NameNode在內(nèi)存中存儲所有的元數(shù)據(jù)(metadata),因此單個NameNode所能存儲的對象(文件+塊)數(shù)目受到NameNode所在JVM的heap size的限制。50G的heap能夠存儲20億(200million)個對象,這20億個對象支持4000個DataNode,12PB的存儲(假設(shè)文件平均大小為40MB)。隨著數(shù)據(jù)的飛速增長,存儲的需求也隨之增長。單個DataNode從4T增長到36T,集群的尺寸增長到8000個DataNode。存儲的需求從12PB增長到大于100PB。
(2)隔離問題
由于HDFS僅有一個NameNode,無法隔離各個程序,因此HDFS上的一個實驗程序就很有可能影響整個HDFS上運行的程序。
(3)性能的瓶頸
由于是單個NameNode的HDFS架構(gòu),因此整個HDFS文件系統(tǒng)的吞吐量受限于單個NameNode的吞吐量。
2.HDFS Federation架構(gòu)設(shè)計,如圖所示
能不能有多個NameNode
HDFS Federation架構(gòu)設(shè)計
二.實現(xiàn)
NameNode HA是為了解決NameNode可用性的問題,而NameNode Federation則主要是為了解決NameNode擴展性,隔離性,以及單個NameNode性能方面的問題。NameNode Federation架構(gòu)如下:
NameNode Federation使用了多個命名空間,這些命名空間互相獨立,自制(其實是對元數(shù)據(jù)的水平切分),而集群中所有DataNode向所有NameNode都進行注冊,而一個塊池(block pool)有屬于同一個命名空間的數(shù)據(jù)塊組成,每個DataNode可能會存儲集群中所有塊池的數(shù)據(jù)塊,每個塊池互相獨立,有一個掛掉了也不會影響其他塊池正常工作。
同時部署了NameNode HA和NameNode Federation時,集群結(jié)構(gòu)會相對復(fù)雜一點,如下圖。在實際的生成環(huán)境中,NameNode HA幾乎是必備,而當(dāng)集群規(guī)模在1000臺以下時,幾乎是不需要NameNode Federation的。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
相關(guān)文章
Spring實現(xiàn)類私有方法的幾個問題(親測通用解決方案)
現(xiàn)實的業(yè)務(wù)場景中,可能需要對Spring的實現(xiàn)類的私有方法進行測試。本文給大家分享Spring實現(xiàn)類私有方法面臨的幾個問題及解決方案,感興趣的朋友跟隨小編一起看看吧2021-06-06詳談springboot過濾器和攔截器的實現(xiàn)及區(qū)別
今天小編就為大家分享一篇詳談springboot過濾器和攔截器的實現(xiàn)及區(qū)別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08Java數(shù)據(jù)結(jié)構(gòu)之棧與隊列實例詳解
這篇文章主要給大家介紹了關(guān)于Java數(shù)據(jù)結(jié)構(gòu)之棧與隊列的相關(guān)資料,算是作為用java描述數(shù)據(jù)結(jié)構(gòu)的一個開始,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2021-11-11Java子類調(diào)用父類的私有屬性的實現(xiàn)示例
在Java中,我們都知道子類不能直接訪問或修改父類的私有屬性,本文主要介紹了Java子類調(diào)用父類的私有屬性的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下2024-05-05IDEA導(dǎo)入外部項目報Error:java: 無效的目標(biāo)發(fā)行版: 11的解決方法
這篇文章主要介紹了IDEA導(dǎo)入外部項目報Error:java: 無效的目標(biāo)發(fā)行版: 11,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09