HDFS的架構如上圖,整體採用master/slave架構,主要有Client、NameNode、DataNode、SecondaryNameNode組成。node
一、Client架構
Client表明用戶,經過與NameNode和DataNode交互從而訪問HDFS中的文件。Client提供了一個相似POSIX的文件系統接口供用戶調用。oop
二、NameNode日誌
整個Hadoop集羣中只有一個NameNode。負責管理HDFS的目錄樹和相關文件的元數據信息。接口
NameNode還負責監控各個DataNode的健康狀態,一旦發現某個DataNode宕機,則將該DataNode移出HDFS並從新備份其上面的數據。it
三、Secondary NameNodeast
Secondary NameNode最重要的任務不是爲NameNode元數據進行熱備份,而是按期合併fsimage和edits日誌,並傳輸給NameNode。這裏須要注意的是,爲了減少NameNode壓力,NameNode本身並不會合併fsimage和edits,並將文件存儲到磁盤上,而是交友Secondary Namenode完成。集羣
四、DataNode監控
每一個Slave節點上安裝一個DataNode,它負責實際的數據存儲,並將數據信息按期的彙報給NameNode。im
當用戶上傳一個文件到HDFS上時,該文件會被切分紅若干個block,分別存儲到不一樣的DataNode.。爲了保證數據可靠,會將同一個block以流水線的方式寫到若干個不一樣的DataNode。