HDFS副本放置策略和机架感知
副本放置策略
的副本放置策略的基本思想是:
第一block在復制和client哪里node于(假設client它不是群集的范圍內(nèi),則這第一個node是隨機選取的。當然系統(tǒng)會嘗試不選擇哪些太滿或者太忙的node)。
第二個副本放置在與第一個節(jié)點不同的機架中的node中(隨機選擇)。
第三個副本和第二個在同一個機架,隨機放在不同的node中。
假設還有很多其它的副本就隨機放在集群的node里。
Hadoop的副本放置策略在可靠性(block在不同的機架)和帶寬(一個管道僅僅須要穿越一個網(wǎng)絡節(jié)點)中做了一個非常好的平衡。
下圖是備份參數(shù)是3的情況下一個管道的三個datanode的分布情況。
流水線復制
當client向 HDFS 文件寫入數(shù)據(jù)的時候。一開始是寫到本地暫時文件里。
假設該文件的副本系數(shù)設置為 3 ,當本地暫時文件累積到一個數(shù)據(jù)塊的大小時,client會從 Namenode 獲取一個 Datanode 列表用于存放副本。然后client開始向第一個Datanode數(shù)據(jù)傳輸,第一個 Datanode 一小部分一小部分 (4 KB) 地接收數(shù)據(jù),將每一部分寫入本地倉庫。并同一時候傳輸該部分到列表中第二個 Datanode 節(jié)點。第二個 Datanode 也是這樣,一小部分一小部分地接收數(shù)據(jù),寫入本地倉庫。并同一時候傳給第三個 Datanode 。
最后,第三個 Datanode 接收數(shù)據(jù)并存儲在本地。因此,Datanode 能流水線式地從前一個節(jié)點接收數(shù)據(jù)。并同一時候轉(zhuǎn)發(fā)給下一個節(jié)點,數(shù)據(jù)以流水線的方式從前一個Datanode拷貝到下一個Datanode。
機架感知
大型Hadoop集群以機架的形式來組織的,同一個機架上不同節(jié)點間的網(wǎng)絡狀況比不同機架之間更為理想。另外,NameNode設法將數(shù)據(jù)塊副本保存在不同的機架上以提高容錯性。
網(wǎng)絡拓撲
有了機架感知。NameNode就能夠畫出上圖所看到的的datanode網(wǎng)絡拓撲圖。D1,R1都是交換機,最底層是datanode。
則H1的rackid=/D1/R1/H1,H1的parent是R1,R1的parent是D1。這些rackid信息能夠通過topology.script.file.name配置。有了這些rackid信息就能夠計算出隨意兩臺datanode之間的距離。
distance(/D1/R1/H1,/D1/R1/H1)=0 同樣的datanode
distance(/D1/R1/H1,/D1/R1/H2)=2 同一rack下的不同datanode
distance(/D1/R1/H1,/D1/R1/H4)=4 同一IDC下的不同datanode
distance(/D1/R1/H1,/D2/R3/H7)=6 不同IDC下的datanode
注意:
1)當沒有配置機架信息時,全部的機器Hadoop都默認在同一個默認的
機架下,以名為”/default-rack”。這樣的情況下,不論什么一臺datanode機器,無論物理上是否屬于同一個機架。都會被覺得是在同一個機架下。
2)一旦配置topology.script.file.name。就依照網(wǎng)絡拓撲結(jié)構(gòu)來尋找datanode。topology.script.file.name這個配置選項的value指定為一個可運行程序。通常為一個腳本。
版權(quán)聲明:本文博客原創(chuàng)文章,博客,未經(jīng)同意,不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的HDFS副本放置策略和机架感知的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RHEV平台中如何在 RED HAT E
- 下一篇: 单页后台模版