一. 前言
1.namenode架構(gòu)的局限性
(1)namespace(命名空間)的限制
由于namenode在內(nèi)存中存儲(chǔ)所有的元數(shù)據(jù)(metadata),因此單個(gè)namenode所能存儲(chǔ)的對(duì)象(文件+塊)數(shù)目受到namenode所在jvm的heap size的限制。50g的heap能夠存儲(chǔ)20億(200million)個(gè)對(duì)象,這20億個(gè)對(duì)象支持4000個(gè)datanode,12pb的存儲(chǔ)(假設(shè)文件平均大小為40mb)。隨著數(shù)據(jù)的飛速增長,存儲(chǔ)的需求也隨之增長。單個(gè)datanode從4t增長到36t,集群的尺寸增長到8000個(gè)datanode。存儲(chǔ)的需求從12pb增長到大于100pb。
(2)隔離問題
由于hdfs僅有一個(gè)namenode,無法隔離各個(gè)程序,因此hdfs上的一個(gè)實(shí)驗(yàn)程序就很有可能影響整個(gè)hdfs上運(yùn)行的程序。
(3)性能的瓶頸
由于是單個(gè)namenode的hdfs架構(gòu),因此整個(gè)hdfs文件系統(tǒng)的吞吐量受限于單個(gè)namenode的吞吐量。
2.hdfs federation架構(gòu)設(shè)計(jì),如圖所示
能不能有多個(gè)namenode
hdfs federation架構(gòu)設(shè)計(jì)
二.實(shí)現(xiàn)
namenode ha是為了解決namenode可用性的問題,而namenode federation則主要是為了解決namenode擴(kuò)展性,隔離性,以及單個(gè)namenode性能方面的問題。namenode federation架構(gòu)如下:
namenode federation使用了多個(gè)命名空間,這些命名空間互相獨(dú)立,自制(其實(shí)是對(duì)元數(shù)據(jù)的水平切分),而集群中所有datanode向所有namenode都進(jìn)行注冊(cè),而一個(gè)塊池(block pool)有屬于同一個(gè)命名空間的數(shù)據(jù)塊組成,每個(gè)datanode可能會(huì)存儲(chǔ)集群中所有塊池的數(shù)據(jù)塊,每個(gè)塊池互相獨(dú)立,有一個(gè)掛掉了也不會(huì)影響其他塊池正常工作。
同時(shí)部署了namenode ha和namenode federation時(shí),集群結(jié)構(gòu)會(huì)相對(duì)復(fù)雜一點(diǎn),如下圖。在實(shí)際的生成環(huán)境中,namenode ha幾乎是必備,而當(dāng)集群規(guī)模在1000臺(tái)以下時(shí),幾乎是不需要namenode federation的。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)服務(wù)器之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
原文鏈接:https://blog.csdn.net/qq_43193797/article/details/85078422