真正的學習是去探索,思考和重建
HDFS產生背景
? 隨著資料量越來越大,在一個作業系統存不下所有的資料,那么就分配到更多的作業系統管理的磁盤中,但是不方便管理和維護,迫切需要一種系統來管理多臺機器上的檔案,這就是分布式檔案管理系統,HDFS只是分布式檔案管理系統中的一種,
HDFS定義
? HDFS( Hadoop Distributed File System),它是一個檔案系統,用于存盤檔案,通過目錄樹來定位檔案;其次,它是分布式的,由很多服務器聯合起來實作其功能,集群中的服務器有各自的角色
關鍵詞:檔案系統,分布式
使用場景
? 適合一次寫入,多次讀出的場景,且不支持檔案的修改,適合用來做資料分析,并不適合用來做網盤應用
優點
-
高容錯性
(1)資料自動保存多個副本,它通過增加副本的形式,提高容錯性, (2)某一個副本丟失以后,它可以自動恢復 -
適合處理大資料
(1)資料規模:能夠處理資料規模達到GB、TB、甚至PB級別的資料: (2)檔案規模:能夠處理百萬規模以上的檔案數量,數量相當之大 (3)可構建在廉價機器上,通過多副本機制,提高可靠性
缺點
-
不適合低延時資料訪問,比如毫秒級的存盤資料,是做不到的
-
無法高效的對大量小檔案進行存盤
(1)存盤大量小檔案的話,它會占用 Namenode大量的記憶體來存盤檔案目錄和塊資訊,這樣是不可取的,因為 Namenode的記憶體總是有限的:
(2)小檔案存盤的尋址時間會超過讀取時間,它違反了HDFS的設計目標,
- 不支持并發寫入、檔案隨機修改HDFS
(1)一個檔案只能有一個寫,不允許多個執行緒同時寫:
(2)僅支持資料 append(追加),不支持檔案的隨機修改
HDFS組成架構圖
HDFS檔案塊大小
思考:快為什么不能設定太小,也不能設定太大呢?
(1)HDFS的塊設定太小,會增加尋址時間,程式一直在找塊的開始位置:
(2)HDFS的塊比磁盤的塊大,其目的是為了最小化尋址開銷:
(3)如果塊設定的太大,從磁盤傳輸資料的時間會明顯大于定位這個塊開始位置所需的時間,導致程式在處理這塊資料時,會非常慢,總結:HDFS塊的大小設定主要取決于磁盤傳輸速率,
相關資料

本文配套GitHub:https://github.com/zhutiansama/FocusBigData
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/152918.html
標籤:Java
上一篇:Filter
