再理解HDFS的存儲機制
1. HDFS開創性地設計出一套文件存儲方式。即對文件切割后分別存放;
2. HDFS將要存儲的大文件進行切割,切割后存放在既定的存儲塊(Block)中,並通過預先設定的優化處理,模式對存儲的數據進行預處理,從而攻克了大文件儲存與計算的需求。
3. 一個HDFS集群包含兩大部分。即NameNode與DataNode。
一般來說,一個集群中會有一個NameNode和多個DataNode共同工作;
4. NameNode是集群的主server,主要是用於對HDFS中全部的文件及內容數據進行維護,並不斷讀取記錄集群中DataNode主機情況與工作狀態,並通過讀取與寫入鏡像日志文件的方式進行存儲。
5. DataNode在HDFS集群中擔任任務詳細執行角色,是集群的工作節點。文件被分成若干個同樣大小的數據塊,分別存儲在若干個DataNode上。DataNode會定期向集群內NameNode發送自己的執行狀態與存儲內容,並依據NameNode發送的指令進行工作;
6. NameNode負責接受client發送過來的信息,然后將文件存儲位置信息發送給提交請求的client。由client直接與DataNode進行聯系,從而進行部分文件的運算與操作。
7. Block是HDFS的基本存儲單元,默認大小是64M。
8. HDFS還能夠對已經存儲的Block進行多副本備份,將每一個Block至少拷貝到3個相互獨立的硬件上,這樣能夠高速恢復損壞的數據;
9. 用戶能夠使用既定的API接口對HDFS中的文件進行操作;
10. 當client的讀取操作錯誤發生的時候。client會向NameNode報告錯誤,並請求NameNode排除錯誤的DataNode后后又一次依據距離排序。從而獲得一個新的DataNode的讀取路徑。假設全部的DataNode都報告讀取失敗。那么整個任務就讀取失敗;
11. 對於寫出操作過程中出現的問題。FSDataOutputStream並不會馬上關閉。client向NameNode報告錯誤信息。並直接向提供備份的DataNode中寫入數據。
備份DataNode被升級為首選DataNode,並在其余2個DataNode中備份復制數據。
NameNode對錯誤的DataNode進行標記以便興許對其進行處理。
