iT邦幫忙

DAY 16
2

動物園之路系列 第 13

動物園之路 -16- 大象的肚子好大!-HDFS

  • 分享至 

  • xImage
  •  

昨天提到MapReduce可以讀取HDFS上的檔案,然後根據檔案的Block數量,產生對應的Map數,接著再透過Reduce輸出到HDFS上。
前面可以知道HDFS基本上會把檔案切成好幾塊,每塊都有對應的副本數,那HDFS是怎麼運作了呢?
如何確保檔案不會遺失?今天就來介紹HDFS吧~
HDFS全名為Hadoop Distributed File System,是Hadoop 分散式檔案系統,
主要由NameNode與DataNode組成,也就是MapReduce會使用的jobtracker與tasktracker。
在正常沒有的HA的架構下,NameNode與DataNode是屬於一對多的關係,NameNode上會記錄所有檔案的MetaData以及這些檔案的Block分別存放到那些DataNode上。

NameNode上所存放的MetaData非常重要,基本上MetaData遺失或損毀,資料是很難救回來了。

從NameNode的MetaData存放目錄下可以看到有幾個檔案,
分別是edits_*、edits_inprogress_*、fsimage_*還有seen_txid,
fsimage所存放的是所有目錄與檔案索引,NameNode會將實體的檢覈資訊儲存在這邊。
當HDFS的檔案目錄有異動的時候,會先寫在edit_inprogress_*,一定時間後namenode會將edit_inprogress_* rolling為edits_*。
當hdfs重啟的時候,fsimage會載入到namenode的記憶體中,並且再將edit_*的操作步驟執行一次,接著比對是否和現行的檔案目錄結構一樣。
seen_txid非常重要,它代表的是namenode裡面edits_* 的尾數,namenode重啟的時候,會按照seen_txid的數字,循序從頭跑edits_0000001~到seen_txid的數字。

所以當你的hdfs發生異常重啟的時候,一定要比對seen_txid內的數字是不是你edits最後的尾數,不然會發生建置namenode時metaData的資料有缺少,導致誤刪Datanode上多餘Block的資訊。


上一篇
動物園之路 -12- 跟大象說Hello~MapReduce(2)
下一篇
動物園之路 -17- 大象的肚子好大!-HDFS (續-Datanode)
系列文
動物園之路27
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

我要留言

立即登入留言