溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Federation設(shè)計(jì)動機(jī)與基本原理是什么

發(fā)布時(shí)間:2021-12-03 17:51:24 來源:億速云 閱讀:204 作者:柒染 欄目:云計(jì)算

本篇文章為大家展示了Federation設(shè)計(jì)動機(jī)與基本原理是什么,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

HDFS Federation是Hadoop最新發(fā)布版本Hadoop-0.23.0中為解決HDFS單點(diǎn)故障而提出的namenode水平擴(kuò)展方案。該方案允許HDFS創(chuàng)建多個(gè)namespace以提高集群的擴(kuò)展性和隔離性。下面主要介紹了HDFS Federation的設(shè)計(jì)動機(jī)和基本原理。

1. 當(dāng)前HDFS概況

1.1 當(dāng)前HDFS架構(gòu)

當(dāng)前HDFS包含兩層結(jié)構(gòu):

(1) Namespace 管理目錄,文件和數(shù)據(jù)塊。它支持常見的文件系統(tǒng)操作,如創(chuàng)建文件,修改文件,刪除文件等。

(2) Block Storage有兩部分組成:

Block Management維護(hù)集群中datanode的基本關(guān)系,它支持?jǐn)?shù)據(jù)塊相關(guān)的操作,如:創(chuàng)建數(shù)據(jù)塊,刪除數(shù)據(jù)塊等,同時(shí),它也會管理副本的復(fù)制和存放。

Physical Storage存儲實(shí)際的數(shù)據(jù)塊并提供針對數(shù)據(jù)塊的讀寫服務(wù)。

【Block Storage的這兩部分分別在namenode和datanode上實(shí)現(xiàn),所以該模塊由namenode和datanode分工完成】

Federation設(shè)計(jì)動機(jī)與基本原理是什么

當(dāng)前HDFS架構(gòu)只允許整個(gè)集群中存在一個(gè)namespace,而該namespace被僅有的一個(gè)namenode管理。這個(gè)架構(gòu)使得HDFS非常容易實(shí)現(xiàn),但是,它(見上圖)在具體實(shí)現(xiàn)過程中會出現(xiàn)一些模糊點(diǎn),進(jìn)而導(dǎo)致了很多局限性(下面將要詳細(xì)說明),當(dāng)然這些局限性只有在擁有大集群的公司,像baidu,騰訊等出現(xiàn)。

1.2 當(dāng)前HDFS局限性
【Block Storage和namespace高耦合】

當(dāng)前namenode中的namespace和block management的結(jié)合使得這兩層架構(gòu)耦合在一起,難以讓其他可能namenode實(shí)現(xiàn)方案直接使用block storage。

【namenode擴(kuò)展性】

HDFS的底層存儲是可以水平擴(kuò)展的(解釋:底層存儲指的是datanode,當(dāng)集群存儲空間不夠時(shí),可簡單的添加機(jī)器已進(jìn)行水平擴(kuò)展),但namespace不可以。當(dāng)前的namespace只能存放在單個(gè)namenode上,而namenode在內(nèi)存中存儲了整個(gè)分布式文件系統(tǒng)中的元數(shù)據(jù)信息,這限制了集群中數(shù)據(jù)塊,文件和目錄的數(shù)目。

【性能】

文件操作的性能制約于單個(gè)namenode的吞吐量,單個(gè)namenode當(dāng)前僅支持約60K的task,而下一代Apache MapReduce將支持多余100K的并發(fā)任務(wù),這隱含著要支持多個(gè)namenode。

【隔離性】

現(xiàn)在大部分公司的集群都是共享的,每天有來自不同group的不同用戶提交作業(yè)。單個(gè)namenode難以提供隔離性,即:某個(gè)用戶提交的負(fù)載很大的job會減慢其他用戶的job,單一的namenode難以像HBase按照應(yīng)用類別將不同作業(yè)分派到不同namenode上。

2. HDFS Federation

2.1  為什么采用Federation

采用Federation的最主要原因是簡單,F(xiàn)ederation能夠快速的解決了大部分單Namenode的問題。

Federation 整個(gè)核心設(shè)計(jì)實(shí)現(xiàn)大概用了4個(gè)月。大部分改變是在Datanode、Config和Tools,而Namenode本身的改動非常少,這樣 Namenode原先的魯棒性不會受到影響。這使得該方案與之前的HDFS版本兼容。

2.2  Federation架構(gòu)

Federation設(shè)計(jì)動機(jī)與基本原理是什么

為了水平擴(kuò)展namenode,federation使用了多個(gè)獨(dú)立的namenode/namespace。這些namenode之間是聯(lián)合的,也就是說,他們之間相互獨(dú)立且不需要互相協(xié)調(diào),各自分工,管理自己的區(qū)域。分布式的datanode被用作通用的數(shù)據(jù)塊存儲存儲設(shè)備。每個(gè)datanode要向集群中所有的namenode注冊,且周期性地向所有namenode發(fā)送心跳和塊報(bào)告,并執(zhí)行來自所有namenode的命令。

一個(gè)block pool由屬于同一個(gè)namespace的數(shù)據(jù)塊組成,每個(gè)datanode可能會存儲集群中所有block pool的數(shù)據(jù)塊。

每個(gè)block pool內(nèi)部自治,也就是說各自管理各自的block,不會與其他block pool交流。一個(gè)namenode掛掉了,不會影響其他namenode。

某個(gè)namenode上的namespace和它對應(yīng)的block pool一起被稱為namespace volume。它是管理的基本單位。當(dāng)一個(gè)namenode/nodespace被刪除后,其所有datanode上對應(yīng)的block pool也會被刪除。當(dāng)集群升級時(shí),每個(gè)namespace volume作為一個(gè)基本單元進(jìn)行升級。

2.3  Federation關(guān)鍵技術(shù)點(diǎn)
【命名空間管理】

Federation中存在多個(gè)命名空間,如何劃分和管理這些命名空間非常關(guān)鍵。在Federation中并采用“文件名hash”的方法,因?yàn)樵摲椒ǖ膌ocality非常差,比如:查看某個(gè)目錄下面的文件,如果采用文件名hash的方法存放文件,則這些文件可能被放到不同namespace中,HDFS需要訪問所有namespace,代價(jià)過大。為了方便管理多個(gè)命名空間,HDFS Federation采用了經(jīng)典的Client Side Mount Table。

Federation設(shè)計(jì)動機(jī)與基本原理是什么

如上圖所示,下面四個(gè)深色三角形代表一個(gè)獨(dú)立的命名空間,上方淺色的三角形代表從客戶角度去訪問的子命名空間。各個(gè)深色的命名空間Mount到淺色的表中,客戶可以訪問不同的掛載點(diǎn)來訪問不同的命名空間,這就如同在Linux系統(tǒng)中訪問不同掛載點(diǎn)一樣。這就是HDFS Federation中命名空間管理的基本原理:將各個(gè)命名空間掛載到全局mount-table中,就可以做將數(shù)據(jù)到全局共享;同樣的命名空間掛載到個(gè)人的mount-table中,這就成為應(yīng)用程序可見的命名空間視圖。

2.4  主要優(yōu)點(diǎn)
【擴(kuò)展性和隔離性】

支持多個(gè)namenode水平擴(kuò)展整個(gè)文件系統(tǒng)的namespace??砂凑諔?yīng)用程序的用戶和種類分離namespace volume,進(jìn)而增強(qiáng)了隔離性。

【通用存儲服務(wù)】

Block Pool抽象層為HDFS的架構(gòu)開啟了創(chuàng)新之門。分離block storage layer使得:

<1> 新的文件系統(tǒng)(non-HDFS)可以在block storage上構(gòu)建

<2> 新的應(yīng)用程序(如HBase)可以直接使用block storage層

<3> 分離的block storage層為將來完全分布式namespace打下基礎(chǔ)

【設(shè)計(jì)簡單】

Federation 整個(gè)核心設(shè)計(jì)實(shí)現(xiàn)大概用了4個(gè)月。大部分改變是在Datanode、Config和Tools中,而Namenode本身的改動非常少,這樣 Namenode原先的魯棒性不會受到影響。雖然這種實(shí)現(xiàn)的擴(kuò)展性比起真正的分布式的Namenode要小些,但是可以迅速滿足需求,另外Federation具有良好的向后兼容性,已有的單Namenode的部署配置不需要任何改變就可以繼續(xù)工作

3. HDFS Federation不足

【單點(diǎn)故障問題】

HDFS Federation并沒有完全解決單點(diǎn)故障問題。雖然namenode/namespace存在多個(gè),但是從單個(gè)namenode/namespace看,仍然存在單點(diǎn)故障:如果某個(gè)namenode掛掉了,其管理的相應(yīng)的文件便不可以訪問。Federation中每個(gè)namenode仍然像之前HDFS上實(shí)現(xiàn)一樣,配有一個(gè)secondary namenode,以便主namenode掛掉一下,用于還原元數(shù)據(jù)信息。

負(fù)載均衡問題】

HDFS Federation采用了Client Side Mount Table分?jǐn)偽募拓?fù)載,該方法更多的需要人工介入已達(dá)到理想的負(fù)載均衡。

上述內(nèi)容就是Federation設(shè)計(jì)動機(jī)與基本原理是什么,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI