2017-04-14 38 views
1

我想了解Namenode,我提到了在線資料,並提到了本書Hadoop:權威指南。Namenode在重新啓動後如何重建完整的塊信息?

我知道Namenode有這樣的概念:「編輯日誌」,「fsimage」,我可以在我的Namenode中看到以下文件。

============================================== ==========================

-rw-rw-r-- 1 vevaan24 vevaan24 1048576 Nov 23 22:53 edits_0000000000000000001-0000000000000000001 
-rw-r--r-- 1 root  root  1048576 Nov 23 23:42 edits_0000000000000000002-0000000000000000002 
-rw-rw-r-- 1 vevaan24 vevaan24 1048576 Nov 24 00:07 edits_0000000000000000003-0000000000000000003 
-rw-rw-r-- 1 vevaan24 vevaan24 1048576 Nov 24 21:03 edits_0000000000000000004-0000000000000000004 
-rw-rw-r-- 1 vevaan24 vevaan24 1048576 Nov 24 22:59 edits_0000000000000000005-0000000000000000005 
-rw-r--r-- 1 root  root  1048576 Nov 24 23:00 edits_0000000000000000006-0000000000000000006 
-rw-rw-r-- 1 vevaan24 vevaan24 1048576 Nov 25 21:15 edits_0000000000000000007-0000000000000000007 
-rw-rw-r-- 1 vevaan24 vevaan24 1048576 Nov 25 21:34 edits_0000000000000000008-0000000000000000008 
-rw-r--r-- 1 root  root  1048576 Nov 26 02:13 edits_inprogress_0000000000000000009 
-rw-rw-r-- 1 vevaan24 vevaan24  355 Nov 25 21:15 fsimage_0000000000000000006 
-rw-rw-r-- 1 vevaan24 vevaan24  62 Nov 25 21:15 fsimage_0000000000000000006.md5 
-rw-r--r-- 1 root  root   355 Nov 26 00:12 fsimage_0000000000000000008 
-rw-r--r-- 1 root  root   62 Nov 26 00:12 fsimage_0000000000000000008.md5 
-rw-r--r-- 1 root  root   2 Nov 26 00:12 seen_txid 
-rw-rw-r-- 1 vevaan24 vevaan24  201 Nov 26 00:12 VERSION 

在這本書中提到,fsimage不存儲塊位置在它

我有以下問題:

1)是否edit logs商店中的塊位置呢? (對於新的交易?)

2)當Namenode和Datanode重新啓動時,Namenode如何獲取塊地址?我的疑問是神經網絡讀fsimage重建文件系統信息,但fsimage沒有塊位置的信息,所以這些信息如何重建?

3)這是真的,fsimageBLOCK ID只,如果有的話,是塊ID對面的Datanode獨特之處? BLOCK ID相同BLOCK地址

回答

1

塊位置,即,在其上存儲塊中的數據節點既不在fsimage文件也不在edit log持續。 Namenode僅在內存中保存此映射。

每個datanode都有責任保存它所存儲塊的列表信息。

在重新啓動期間,Namenode將fsimage文件加載到內存中,並應用edit log中的編輯,從數據節點獲取塊位置的缺失信息,因爲它們將其塊列表簽入。 Namenode與來自塊列表的信息一起構造塊與它們在其存儲器中的位置的映射。

fsimage有多個Block ID。它包含文件塊,塊大小,複製因子,訪問時間,修改時間,文件權限等信息,但不包含塊的位置。

,塊ID是唯一的。塊地址將引用該塊所在的datanodes的地址。

+0

非常感謝您的詳細信息。但有一件事我還不能理解。 Datanode具有塊形式的數據,但DN如何知道給定塊屬於哪個文件?我同意DN向NN提供塊信息,但是如何幫助查找DN上給定文件的塊地址。 – CuriousMind

+1

塊由它們的塊ID標識,並且它們是唯一的。 Datanodes在其中保存這些信息。 – franklinsijo

+0

那麼這是否意味着DN會將塊ID發送給NN,並且由於fsimage具有塊ID信息,因此它會根據塊ID進行映射。如果這是正確的,那麼它是有道理的。對於這項工作,block id需要是唯一的所有hdfs集羣。這是正確的理解? – CuriousMind

相關問題