HDFS采用Master/Slave架構。NameNode就是HDFS的Master架構。HDFS系統包括一個NameNode元件,主要負責HDFS檔案系統的管理工作,具體包括名稱空間(namespace)管理,檔案Block管理。
NameNode提供的是始終被動接收服務的server。
NameNode主要有三類協定接口:
ClientProtocol接口,提供給用戶端,用于通路NameNode。它包含了檔案的HDFS功能。和GFS一樣. HDFS不提供POSIX形式的接口,而使用了一個私有接口。
DataNodeProtocol接口,用于從DataNode向NameNode通信。
NameNodeProtocol接口,用于從NameNode到NameNode的通信。
在HDFS内部,一個檔案被分成一個或多個Block,這些Block存儲在DataNode集合裡,NameNode就負責管理檔案Block的所有中繼資料資訊,
這些中繼資料資訊主要為:
“檔案名 -> 資料塊‘’映射
“資料塊 -> DataNode清單”映射
其中,"檔案名 -> 資料塊"儲存在磁盤上進行持久化存儲,需要注意的是NameNode上不儲存‘’資料塊 -> DataNode清單”映射,該清單是通過DataNode上報給NameNode建立起來的。NameNode執行檔案系統的名稱空間(namespace)操作,例如打開、關閉、重命名檔案和目錄,同時決定檔案資料塊到具體DataNode節點的映射。
和NameNode最相關的還有一個概念就是Secondary NameNode,其主要是定時對NameNode的資料snapshots進行備份,這樣可盡量降低NameNode崩潰之後導緻資料丢失的風險,其所做的工作就是從NameNode獲得fsimage和edits後把兩者重新合并發給NameNode,這樣,既能減輕NameNode的負擔又能安全地備份,一旦HDFS的Master架構失效,就可以借助Secondary NameNode進行資料恢複。
本文轉自大資料躺過的坑部落格園部落格,原文連結:http://www.cnblogs.com/zlslch/p/5081112.html,如需轉載請自行聯系原作者