HDFS 副本

1. 副本策略

NameNode具有RackAware機架感知功能急黎,這個可以配置扎狱。

  • 若client為DataNode節(jié)點,那存儲block時勃教,規(guī)則為:副本1淤击,同client的節(jié)點上;副本2故源,不同機架節(jié)點上污抬;副本3,同第二個副本機架的另一個節(jié)點上绳军;其他副本隨機挑選印机。
  • 若client不為DataNode節(jié)點,那存儲block時门驾,規(guī)則為:副本1射赛,隨機選擇一個節(jié)點上;副本2奶是,不同副本1楣责,機架上;副本3聂沙,同副本2相同的另一個節(jié)點上秆麸;其他副本隨機挑選

(For the common case, when the replication factor is three, HDFS’s placement policy is to put one replica on the local machine if the writer is on a datanode, otherwise on a random datanode, another replica on a node in a different (remote) rack, and the last on a different node in the same remote rack. This policy cuts the inter-rack write traffic which generally improves write performance. The chance of rack failure is far less than that of node failure; this policy does not impact data reliability and availability guarantees. However, it does reduce the aggregate network bandwidth used when reading data since a block is placed in only two unique racks rather than three. With this policy, the replicas of a file do not evenly distribute across the racks. One third of replicas are on one node, two thirds of replicas are on one rack, and the other third are evenly distributed across the remaining racks. This policy improves write performance without compromising data reliability or read performance.)

默認情況下,Hadoop機架感知是沒有啟用的逐纬,需要在NameNode機器的hadoop-site.xml里配置一個選項蛔屹,例如:

<property>  
    <name>topology.script.file.name</name>
    <value>/path/to/script</value>
</property>

這個配置選項的value指定為一個可執(zhí)行程序,通常為一個腳本豁生,該腳本接受一個參數(shù)兔毒,輸出一個值漫贞。接受的參數(shù)通常為datanode機器的ip地址,而輸出的值通常為該ip地址對應的datanode所在的rackID育叁,例如”/rack1”迅脐。Namenode啟動時,會判斷該配置選項是否為空豪嗽,如果非空谴蔑,則表示已經(jīng)啟用機架感知的配置,此時namenode會根據(jù)配置尋找該腳本龟梦,并在接收到每一個datanode的heartbeat時隐锭,將該datanode的ip地址作為參數(shù)傳給該腳本運行,并將得到的輸出作為該datanode所屬的機架计贰,保存到內(nèi)存的一個map中钦睡。

官方腳本:https://wiki.apache.org/hadoop/topology_rack_awareness_scripts

腳本:

HADOOP_CONF=/root/tmp

while [ $# -gt 0 ] ; do
  nodeArg=$1
  exec< ${HADOOP_CONF}/topology.data 
  result="" 
  while read line ; do
    ar=( $line ) 
    if [ "${ar[0]}" = "$nodeArg" ] ; then
      result="${ar[1]}"
    fi
  done 
  shift 
  if [ -z "$result" ] ; then
    echo -n "/default/rack "
  else
    echo -n "$result "
  fi
done 

topology.data :

ceph-1 /rack1
ceph-2 /rack2
ceph-3 /rack3
192.168.1.44 /rack1
192.168.1.43 /rack2
192.168.1.42 /rack3

當沒有配置機架信息時,所有的機器hadoop都默認在同一個默認的機架下躁倒,名為 “/default-rack”荞怒,這種情況下,任何一臺datanode機器秧秉,不管物理上是否屬于同一個機架褐桌,都會被認為是在同一個機架下,此時象迎,就很容易出現(xiàn)之前提到的增添機架間網(wǎng)絡負載的情況荧嵌。在沒有機架信息的情況下,namenode默認將所有的slaves機器全部默認為在/default-rack下挖帘,此時寫block時完丽,三個datanode機器的選擇完全是隨機的恋技。

2. 副本數(shù)大于datanode數(shù)

實際副本=datanode數(shù)

3. 查看文件存儲的文件信息拇舀、block信息、block的位置

hdfs fsck /lucy/etcd-v3.3.5-linux-amd64.tar.gz -files -blocks -locations

4. HDFS冗余數(shù)據(jù)塊的自動刪除

在日常維護hadoop集群的過程中發(fā)現(xiàn)這樣一種情況:
某個節(jié)點由于網(wǎng)絡故障或者DataNode進程死亡蜻底,被NameNode判定為死亡骄崩,
HDFS馬上自動開始數(shù)據(jù)塊的容錯拷貝;
當該節(jié)點重新添加到集群中時薄辅,由于該節(jié)點上的數(shù)據(jù)其實并沒有損壞要拂,
所以造成了HDFS上某些block的備份數(shù)超過了設定的備份數(shù)。
通過觀察發(fā)現(xiàn)站楚,這些多余的數(shù)據(jù)塊經(jīng)過很長的一段時間才會被完全刪除掉脱惰,
那么這個時間取決于什么呢?
該時間的長短跟數(shù)據(jù)塊報告的間隔時間有關窿春。
Datanode會定期將當前該結(jié)點上所有的BLOCK信息報告給Namenode拉一,
參數(shù)dfs.blockreport.intervalMsec就是控制這個報告間隔的參數(shù)采盒。

hdfs-site.xml文件中有一個參數(shù):
<property>
<name>dfs.blockreport.intervalMsec</name>
<value>10000</value>
<description>Determines block reporting interval in milliseconds.</description>
</property>
其中3600000為默認設置,3600000毫秒蔚润,即1個小時磅氨,也就是說,塊報告的時間間隔為1個小時嫡纠,所以經(jīng)過了很長時間這些多余的塊才被刪除掉烦租。通過實際測試發(fā)現(xiàn),當把該參數(shù)調(diào)整的稍小一點的時候(60秒)除盏,多余的數(shù)據(jù)塊確實很快就被刪除了叉橱。
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市者蠕,隨后出現(xiàn)的幾起案子赏迟,更是在濱河造成了極大的恐慌,老刑警劉巖蠢棱,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锌杀,死亡現(xiàn)場離奇詭異,居然都是意外死亡泻仙,警方通過查閱死者的電腦和手機糕再,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來玉转,“玉大人突想,你說我怎么就攤上這事【孔ィ” “怎么了猾担?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長刺下。 經(jīng)常有香客問我绑嘹,道長,這世上最難降的妖魔是什么橘茉? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任工腋,我火速辦了婚禮,結(jié)果婚禮上畅卓,老公的妹妹穿的比我還像新娘擅腰。我一直安慰自己,他們只是感情好翁潘,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布趁冈。 她就那樣靜靜地躺著,像睡著了一般拜马。 火紅的嫁衣襯著肌膚如雪渗勘。 梳的紋絲不亂的頭發(fā)上矾飞,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機與錄音呀邢,去河邊找鬼洒沦。 笑死,一個胖子當著我的面吹牛价淌,可吹牛的內(nèi)容都是我干的申眼。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼蝉衣,長吁一口氣:“原來是場噩夢啊……” “哼括尸!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起病毡,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤濒翻,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后啦膜,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體有送,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年僧家,在試婚紗的時候發(fā)現(xiàn)自己被綠了雀摘。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡八拱,死狀恐怖阵赠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情肌稻,我是刑警寧澤清蚀,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站爹谭,受9級特大地震影響枷邪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜旦棉,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一齿风、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧绑洛,春花似錦、人聲如沸童本。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽穷娱。三九已至绑蔫,卻和暖如春运沦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背配深。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工携添, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人篓叶。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓烈掠,卻偏偏與公主長得像,于是被迫代替她去往敵國和親缸托。 傳聞我的和親對象是個殘疾皇子左敌,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容