1. HDFS最初做爲Apache Nutch搜索引擎的基礎而生,被設計爲可在廉價硬件設備上運行的具備高容錯性的分佈式文件系統。
2. 主要設計目標是大吞吐量而非低延遲性,爲此放鬆了一些POSIX協議的要求。
3. HDFS支持超大文件,典型文件一般是GB級的。HDFS的文件是一次寫入屢次讀取模式。
4. HDFS將文件存儲爲一系列的文件塊,每一個塊大小都是同樣的(除最後一個未滿的)。一個標準的數據塊是64MB。
5. HDFS支持傳統的級聯文件組織方式,但目前尚不支持用戶配額或訪問權限,不支持軟硬連接。
6. 在NameNode主要經過EditLog和FsImage兩個本地OS文件來維護整個namespace。
系統運行中,整個文件系統的任何改變(metadata)都被實時地記錄在EditLog文件中。而FsImage文件則無變化。
系統再次啓動時,首先從FsImage中讀取上次啓動後保存的映射信息,並將EditLog中記錄變化信息更新至FsImage並保存,最後清空Editlog文件。
7. 對不一樣文件,能夠在建立的時候設定不一樣的塊的大小和複製率,也能夠在隨後更改。設定改變或遇到DataNode故障時將自動啓動塊的再平衡過程。
8. 一般在第一個數據塊所在的機架的其餘機器中有一個複製塊,在其餘機架中保存另外一個複製塊。
9. 系統啓動時,NameNode首先進入安全模式,接受並檢查從各個DataNode發來的HeartBeat和Blockreport,檢查事後退出該模式後纔會發生數據塊複製。
10. 建立文件時會生成一個校驗碼,再次獲取數據時將校驗碼進行比對,若是不完整將從其餘複製塊中重新請求數據。
11. 從客戶端建立一個文件過程當中,當不滿一個數據塊時會首先寫入客戶端的緩存中。文件大小超過塊大小後,纔會在HDFS系統中被分配一個塊位置。
而且,文件傳送過程以pipeling的方式進行,即一個數據塊在接受數據的同時也向下一個複製塊傳送數據。
12. HDFS上的文件被刪除後,會被更名被轉移到/trash文件夾下,保存必定時間後(默認6小時)才被刪除。因此刪除一個文件後並不會立刻空出相應的容量。
固然仍然保留在/trash中被刪除的文件也能夠迅速地被恢復。緩存