HDFS由三個基本組件組成:NameNode,SecondaryName,DataNode,其思想相似於Linux的文件系統,能夠進行類比。html
1.管理整個文件系統的命名空間,內部維護了命名樹。安全
2.存儲元數據:文件層級關係,文件全部者及權限,每一個文件由哪些文件塊組成(但元信息中不包括每一個塊的位置)。內容經過fsimage及edits維護,後文會詳述。框架
3.接受客戶端請求分佈式
首先,NameNode中存儲一條元信息須要200byte,而元信息是保存在NameNode的內存中的,不能分佈式存儲,文件越小,存儲一樣大小的內容元信息越大,NameNode的內存有可能會成爲系統存儲的瓶頸。spa
其次,大文件減小了磁盤的尋道時間。可是數據塊過大也會出現問題,MapReduce框架一般會爲每一個數據塊啓動一個進程,數據塊過大會使並行數量減小,下降任務處理效率。日誌
fsimage是NameNode的元數據鏡像文件,用於存儲某一時段內存的元數據信息,而系統運行期間全部元信息的操做都保存在內存中並被持久化到另外一個文件edits中,edits會被週期性合併進fsimage中。合併兩個日誌的操做顯然會佔用大量的CPU,內存及IO,而NameNode中的計算及存儲資源是很寶貴的,所以,一般合併操做一般交給SecondaryNameNode(注意,SecondaryNameNode做用不是熱備!)。而NameNode自己一般也不會參與MapReduce計算和數據存儲。htm
能夠發現,HDFS中NameNode是一個單點,除了按期保存fsimage用於故障恢復外,也能夠在元數據寫入同時將其實時同步到一個遠程掛載的NFS上。blog
1. 減小啓動時NameNode合併日誌的時間進程
2. 必定程度上減小了NameNode的單點問題內存
1.負責存儲數據塊,響應客戶端讀寫(注意,客戶端直接讀寫DataNode,而非通過NameNode)。
2.根據NameNode發送的指令建立,刪除和複製文件。
3.按期向NameNode發送心跳,報告文件塊列表信息。
4.爲了安全,提供了數據塊冗餘,默認爲3個副本。數據塊默認爲64MB
5.數據完整性問題:
存儲和處理數據時數據有可能發生錯誤或丟失,HDFS會對寫入的數據計算校驗和。
參考:
http://www.cnblogs.com/sunddenly/category/611923.html