HDFS相關內容
HDFS定義:是一個檔案系統,用於儲存檔案、通過目錄樹來定位檔案,其次,他是分散式得,由很多伺服器聯合起來實現其功能,叢集中的伺服器有各自的角色。
HDFS主要使用場景:一次寫入,多次讀取。一個檔案經過建立、寫入和關閉之後就不需要改變。
HDFS特性:
- hdfs是一個分散式的檔案系統,用於儲存檔案,通過統一的名稱空間目錄樹來定位檔案;
- 採用 master/slave(主從)架構。有一個 namenode 和多個 datanode 組成,各司其職;
- 分塊儲存,預設大小在Hadoop2.x版本中是128M;
- namenode 元資料管理,負責維護整個hdfs檔案系統的目錄樹結構,以及每個檔案所對應的 block 塊資訊(block 的 id,及所在的 datanode 伺服器)。
- DataNode 資料儲存 檔案的 block 具體儲存由 datanode承擔,datanode 定時向 namenode 彙報自己持有的 block 資訊
- 副本機制,為了容錯,檔案的 所有block 都會有副本
- HDFS 的設計為適應一次寫入,多次讀取,且不支援檔案的修改。
HDFS優點:
(1)高容錯性
1)資料自動儲存多個副本。它通過增加副本的形式,提高容錯性。
2)某一個副本丟失以後,它可以自動恢復,這是由 HDFS內部機制實現的,我們不必關心。
(2)適合批處理
1)它是通過移動計算而不是移動資料。
2)它會把資料位置暴露給計算框架。
(3)適合大資料處理
1)資料規模:能夠處理資料規模達到 GB、TB、甚至PB級別的資料。
2)檔案規模:能夠處理百萬規模以上的檔案數量,數量相當之大。
3)節點規模:能夠處理10K節點的規模。
(4)流式資料訪問
1)一次寫入,多次讀取,不能修改,只能追加。
2)它能保證資料的一致性。
(5)可構建在廉價機器上
1)它通過多副本機制,提高可靠性。
2)它提供了容錯和恢復機制。比如某一個副本丟失,可以通過其它副本來恢復。
2、 HDFS 缺點:
(1)不適合低延時資料訪問;
1)比如毫秒級的來儲存資料,這是不行的,它做不到。
2)它適合高吞吐率的場景,就是在某一時間內寫入大量的資料。但是它在低延時的情況 下是不行的,比如毫秒級以內讀取資料,這樣它是很難做到的。
改進策略
(2)無法高效的對大量小檔案進行儲存
1)儲存大量小檔案的話,它會佔用 NameNode大量的記憶體來儲存檔案、目錄和塊資訊。這樣是不可取的,因為NameNode的記憶體總是有限的。
2)小檔案儲存的尋道時間會超過讀取時間,它違反了HDFS的設計目標。 改進策略
(3)併發寫入、檔案隨機修改
1)一個檔案只能有一個寫,不允許多個執行緒同時寫。
2)僅支援資料 append(追加),不支援檔案的隨機修改。