HDFS中的NameNode和DataNode

    HDFS集羣中以Master-Slave模式運行,主要有兩類節點:一個Namenode節點(即master)和多個Datanode節點。Namenode管理文件系統的Namespace.他維護着文件系統樹以及文件樹中所有的文件和文件夾的元數據


      hdfs架構圖:

wKiom1V_-OPSgEV_AATTZm5yVSc993.jpg      



Namenode:

Namenode管理文件系統的Namespace。它維護着文件系統樹以及文件樹中所有的文件和文件夾的元數據(Metadata).管理這些信息的文件有兩個,分別是Namespace鏡像文件(Namespace image)和操作日誌文件(edit log), 這些信息被Cache在RAM中,當然,這兩個文件也會被持久化存儲在本地磁盤。Namenode記錄着每個文件中各個塊所在的數據節點的位置信息,但是它並不持久化存儲這些信息,因爲這些信息會在系統重啓時從數據及節點重建。


Namenode結構抽象圖:

wKiom1V_-PnxnGs8AAPoPz9H2zo240.jpg

客戶端代表用戶與namenode和datanode交互來訪問整個文件系統。客戶端提供了一系列的文件系統接口,因此我們在編程時,幾乎無需知道datanode和namenode,即可完成我們所需要的功能。


Datanode:

Datanode是文件系統的工作節點,他們根據客戶端或者namenode的調度存儲和檢索數據,並且定期向namenode發送他們所存儲的塊(block)的列表.


Namenode容錯機制:

沒有了Namenode,HDFS就不能工作。事實上,如果運行namenode的機器壞掉的話,系統中的文件將會完全丟失,因爲沒有其他方法能夠將位於不同datanode上的文件塊重建文件。因此,namenode的容錯機制非常重要,Hadoop提供了兩種容錯機制。


第一種方式:將持久化存儲在本地磁盤的文件系統元數據備份。Hadoop可以通過配置來讓Namenode將它的持久化狀態寫道不同的文件系統中。這種寫操作時同步並且是原子化的。比較常見的配置是在將持久化狀態寫道本地磁盤的同時,也寫到遠端掛載的網絡文件系統。


第二種方式:是運行一個輔助的Namenode(Secondary Namenode).實時上Secondary Namenode並不能被用作Namenode它的主要作用是定期將namespace鏡像與操作日誌文件(edit log)合併,以防止操作日誌文件(edit log)變的過大。通常,Secondary Namenode 運行在一個單獨的物理機上,因爲合併nameSpace鏡像的一個備份,如果namenode宕機了,這個備份就可以用上。但是輔助namenode總是落後於namenode,所以在namenode宕機時,數據丟失時不可避免的。在這種情況下,一般的,要結合第一種方式中提到的遠程掛載的網絡文件系統(NFS)中的namenode 的元數據文件來使用,把nfs中的namenode元數據文件,拷貝到輔助namenode並把輔助namenode作爲namenode來運行。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章