再理解HDFS的儲存機制,理解HDFS儲存機制
再理解HDFS的儲存機制
1. HDFS開創性地設計出一套檔案儲存體方式,即對檔案分割後分別存放;
2. HDFS將要儲存的大檔案進行分割,分割後存放在既定的儲存塊(Block)中,並通過預先設定的最佳化處理,模式對儲存的資料進行預先處理,從而解決了大檔案儲存與計算的需求;
3. 一個HDFS叢集包括兩大部分,即NameNode與DataNode。一般來說,一個叢集中會有一個NameNode和多個DataNode共同工作;
4. NameNode是叢集的主伺服器,主要是用於對HDFS中所有的檔案及內容資料進行維護,並不斷讀取記錄集群中DataNode主機情況與工作狀態,並通過讀取與寫入鏡像記錄檔的方式進行儲存;
5. DataNode在HDFS叢集中擔任任務具體執行角色,是叢集的工作節點。檔案被分成若干個相同大小的資料區塊,分別儲存在若干個DataNode上,DataNode會定期向叢集內NameNode發送自己的運行狀態與儲存內容,並根據NameNode發送的指令進行工作;
6. NameNode負責接受用戶端發送過來的資訊,然後將檔案儲存體位置資訊發送給提交請求的用戶端,由用戶端直接與DataNode進行聯絡,從而進行部分檔案的運算與操作。
7. Block是HDFS的基本存放裝置單元,預設大小是64M;
8. HDFS還可以對已經儲存的Block進行多副本備份,將每個Block至少複製到3個相互獨立的硬體上,這樣可以快速恢複損壞的資料;
9. 使用者可以使用既定的API介面對HDFS中的檔案進行操作;
10. 當用戶端的讀取操作發生錯誤的時候,用戶端會向NameNode報告錯誤,並請求NameNode排除錯誤的DataNode後後重新根據距離排序,從而獲得一個新的DataNode的讀取路徑。如果所有的DataNode都報告讀取失敗,那麼整個任務就讀取失敗;
11. 對於寫出操作過程中出現的問題,FSDataOutputStream並不會立即關閉。用戶端向NameNode報告錯誤資訊,並直接向提供備份的DataNode中寫入資料。備份DataNode被升級為首選DataNode,並在其餘2個DataNode中備份複製資料。NameNode對錯誤的DataNode進行標記以便後續對其進行處理。