天天看點

HDFS中的NameNode和DataNode

    HDFS叢集中以Master-Slave模式運作,主要有兩類節點:一個Namenode節點(即master)和多個Datanode節點。Namenode管理檔案系統的Namespace.他維護着檔案系統樹以及檔案樹中所有的檔案和檔案夾的中繼資料。

      hdfs架構圖:

HDFS中的NameNode和DataNode

Namenode:

Namenode管理檔案系統的Namespace。它維護着檔案系統樹以及檔案樹中所有的檔案和檔案夾的中繼資料(Metadata).管理這些資訊的檔案有兩個,分别是Namespace鏡像檔案(Namespace p_w_picpath)和記錄檔檔案(edit log), 這些資訊被Cache在RAM中,當然,這兩個檔案也會被持久化存儲在本地磁盤。Namenode記錄着每個檔案中各個塊所在的資料節點的位置資訊,但是它并不持久化存儲這些資訊,因為這些資訊會在系統重新開機時從資料及節點重建。

Namenode結構抽象圖:

HDFS中的NameNode和DataNode

用戶端代表使用者與namenode和datanode互動來通路整個檔案系統。用戶端提供了一系列的檔案系統接口,是以我們在程式設計時,幾乎無需知道datanode和namenode,即可完成我們所需要的功能。

Datanode:

Datanode是檔案系統的工作節點,他們根據用戶端或者namenode的排程存儲和檢索資料,并且定期向namenode發送他們所存儲的塊(block)的清單.

Namenode容錯機制:

沒有了Namenode,HDFS就不能工作。事實上,如果運作namenode的機器壞掉的話,系統中的檔案将會完全丢失,因為沒有其他方法能夠将位于不同datanode上的檔案塊重建檔案。是以,namenode的容錯機制非常重要,Hadoop提供了兩種容錯機制。

第一種方式:将持久化存儲在本地磁盤的檔案系統中繼資料備份。Hadoop可以通過配置來讓Namenode将它的持久化狀态寫道不同的檔案系統中。這種寫操作時同步并且是原子化的。比較常見的配置是在将持久化狀态寫道本地磁盤的同時,也寫到遠端挂載的網絡檔案系統。