您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)HDFS中機(jī)架感知策略的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
通常來說大型的Hadoop集群是以機(jī)架的形式來組織的他們分布在不同的機(jī)架上面,同一個機(jī)架節(jié)點往往通過同一個網(wǎng)絡(luò)交換機(jī)連接,在網(wǎng)絡(luò)寬帶方面比跨機(jī)架通信有較大優(yōu)勢。但是如果某一個文件數(shù)據(jù)庫同時存儲在同一個機(jī)架上面時,可能由于各種故障原因,導(dǎo)致文件不可用。HDFS采用機(jī)架感知策略來改進(jìn)數(shù)據(jù)的可靠性、可用性和網(wǎng)絡(luò)寬度的利用率。
通過機(jī)架感知的過程,NameNode可以確定每一個 DataNode所屬的機(jī)架id。一個簡單但沒有優(yōu)化的策略就是將副本存放在不同的機(jī)架上,這樣可以防止當(dāng)整個機(jī)架失效時數(shù)據(jù)的丟失,并且允許讀數(shù)據(jù)的時候充分利用多個機(jī)架的帶寬。這種策略設(shè)置可以將副本均勻分布在集群中,有利于當(dāng)組件失效的情況下的均勻負(fù)載。
也就是說,HDFS系統(tǒng)的機(jī)架感知策略的優(yōu)勢是防止由于某個機(jī)架失效導(dǎo)致數(shù)據(jù)丟失,并且允許讀取數(shù)據(jù)時充分利用多個機(jī)架的帶寬。HDFS會盡量讓讀取任務(wù)去讀取距離客戶端最近的副本數(shù)據(jù)來減少整體帶寬消耗,從而實現(xiàn)降低整體的帶寬延時。
對于副本距離的計算公式,HDFS采用如下約定:
Distance(Rack 1/D1 Rack1/D1)=0 //同一臺服務(wù)器的距離為0
Distance(Rack 1/D1 Rack1/D3)=2 //通機(jī)架不同服務(wù)器的距離為2
Distance(Rack 1/D1 Rack2/D1)=4 //不同機(jī)架服務(wù)器距離為4
通常而言,一個Rack共享一個電源,一條網(wǎng)線,一個交換機(jī),HDFS備份通常在同一個Rack上存儲一份,在另外一個Rack上存儲兩份(另外:HDFS以block為單位,備份也要以block為單位)
通過機(jī)架感知,處于工作狀態(tài)的HDFS總是設(shè)法確保數(shù)據(jù)塊的三個副本(或者更多)中至少有兩個在同一機(jī)架,至少有一個處在不同機(jī)架
而HDFS為每一個block存三份的話,那么client如何來寫入呢?
當(dāng)client 寫文件創(chuàng)建新block之后,Name node會為這個block 創(chuàng)建一整個HDFS cluster 里獨有的ID,并且決定哪些Data node來存儲這個block的所有備份。被選擇到的Data node會組成一個隊列,client 向隊列的第一個Data node 寫入,第一個Data node除了把數(shù)據(jù)存在自己的硬盤上以外,還要把數(shù)據(jù)傳給隊列里的下一個Data node,直到最后一個Data node接到數(shù)據(jù)完畢
關(guān)于“HDFS中機(jī)架感知策略的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。