這篇文章將為大家詳細(xì)講解有關(guān)HDFS中機(jī)架感知策略的示例分析,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
專注于為中小企業(yè)提供成都網(wǎng)站建設(shè)、成都網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)灣里免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上千企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
通常來說大型的Hadoop集群是以機(jī)架的形式來組織的他們分布在不同的機(jī)架上面,同一個(gè)機(jī)架節(jié)點(diǎn)往往通過同一個(gè)網(wǎng)絡(luò)交換機(jī)連接,在網(wǎng)絡(luò)寬帶方面比跨機(jī)架通信有較大優(yōu)勢(shì)。但是如果某一個(gè)文件數(shù)據(jù)庫同時(shí)存儲(chǔ)在同一個(gè)機(jī)架上面時(shí),可能由于各種故障原因,導(dǎo)致文件不可用。HDFS采用機(jī)架感知策略來改進(jìn)數(shù)據(jù)的可靠性、可用性和網(wǎng)絡(luò)寬度的利用率。
通過機(jī)架感知的過程,NameNode可以確定每一個(gè) DataNode所屬的機(jī)架id。一個(gè)簡(jiǎn)單但沒有優(yōu)化的策略就是將副本存放在不同的機(jī)架上,這樣可以防止當(dāng)整個(gè)機(jī)架失效時(shí)數(shù)據(jù)的丟失,并且允許讀數(shù)據(jù)的時(shí)候充分利用多個(gè)機(jī)架的帶寬。這種策略設(shè)置可以將副本均勻分布在集群中,有利于當(dāng)組件失效的情況下的均勻負(fù)載。
也就是說,HDFS系統(tǒng)的機(jī)架感知策略的優(yōu)勢(shì)是防止由于某個(gè)機(jī)架失效導(dǎo)致數(shù)據(jù)丟失,并且允許讀取數(shù)據(jù)時(shí)充分利用多個(gè)機(jī)架的帶寬。HDFS會(huì)盡量讓讀取任務(wù)去讀取距離客戶端最近的副本數(shù)據(jù)來減少整體帶寬消耗,從而實(shí)現(xiàn)降低整體的帶寬延時(shí)。
對(duì)于副本距離的計(jì)算公式,HDFS采用如下約定:
Distance(Rack 1/D1 Rack1/D1)=0 //同一臺(tái)服務(wù)器的距離為0
Distance(Rack 1/D1 Rack1/D3)=2 //通機(jī)架不同服務(wù)器的距離為2
Distance(Rack 1/D1 Rack2/D1)=4 //不同機(jī)架服務(wù)器距離為4
通常而言,一個(gè)Rack共享一個(gè)電源,一條網(wǎng)線,一個(gè)交換機(jī),HDFS備份通常在同一個(gè)Rack上存儲(chǔ)一份,在另外一個(gè)Rack上存儲(chǔ)兩份(另外:HDFS以block為單位,備份也要以block為單位)
通過機(jī)架感知,處于工作狀態(tài)的HDFS總是設(shè)法確保數(shù)據(jù)塊的三個(gè)副本(或者更多)中至少有兩個(gè)在同一機(jī)架,至少有一個(gè)處在不同機(jī)架
而HDFS為每一個(gè)block存三份的話,那么client如何來寫入呢?
當(dāng)client 寫文件創(chuàng)建新block之后,Name node會(huì)為這個(gè)block 創(chuàng)建一整個(gè)HDFS cluster 里獨(dú)有的ID,并且決定哪些Data node來存儲(chǔ)這個(gè)block的所有備份。被選擇到的Data node會(huì)組成一個(gè)隊(duì)列,client 向隊(duì)列的第一個(gè)Data node 寫入,第一個(gè)Data node除了把數(shù)據(jù)存在自己的硬盤上以外,還要把數(shù)據(jù)傳給隊(duì)列里的下一個(gè)Data node,直到最后一個(gè)Data node接到數(shù)據(jù)完畢
關(guān)于“HDFS中機(jī)架感知策略的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。