HDFS 概述
HDFS 產生背景
隨着計算機技術的發展,數據量越來越大,在一個操作系統中存不下所有的數據,就會把數據分配到更多的操作系統管理的磁盤中,但是不方便管理和維護,迫切需要一種系統來管理多臺機器上的文件。。於是分佈式文件管理系統孕育而生。HDFS只是分佈式文件管理系統中的一種。
HDFS 定義
HDFS (Hadoop Distributed File System) 是一個文件管理系統。用於儲存文件,通過目錄樹來定位文件。其次,它是分佈式的,由很多服務器聯合起來實現其功能,集羣中的服務器有各自的角色。
HDFS 使用場景
HDFS的設計適合一次寫入,多次讀出的場景,且不支持文件的修改。適合用來做數據分析,並不適合用來做網盤應用。
HDFS 架構組成
如圖所示,相關模塊的功能如下
NameNode
- NameNode 也就是Master,擔當管理者角色.負責管理整個文件系統的元數據,以及每一個路徑(文件)所對應的數據塊信息。
- 管理HDFS名稱空間
- 管理副本配置策略
- 處理塊數據 (Block) 映射信息
- 處理客戶端讀寫請求
Secondary NameNode
- Secondary NameNode
- 輔助NameNode, 分擔其工作量。比如定期合併Fsimage和Edits,並推送給NameNode
- 在緊急情況下,可輔助恢復NameNode
DataNode
- DataNode 充當NameNode的slave角色。NameNode下達命令,DataNode執行實際操作。負責管理用 戶的文件數據塊,每一個數據塊都可以在多個datanode上存儲多個副本。
- 儲存實際數據塊
- 執行數據塊的讀寫操作
Client
- Client
- 進行文件切分。文件上傳HDFS的時候,Client會將文件切分成單個Block,然後進行上傳操作。
- 與NameNode交互,獲取文件的位置信息
- 與DataNode交互,讀取或者寫入數據
HDFS 優缺點
優點
- 高容錯性
- 數據自動保存多個副本。通過增加副本的方式,提高容錯性。
- 某一個副本丟失後,可自動恢復。
- 適合處理大數據
- 數據規模:能夠處理數據規模達到GB、TB、甚至PB級別的數據
- 文件規模.能夠處理由萬規模以上的文件數量,數量相當之大
- 可構建在廉價機器上,通過多副本複製機制,提高可靠性。
缺點
- 不適合低延時數據訪問,比如毫秒級的存儲數據
- 無法高效對大量小文件進行存儲
- 存儲大小小文件,會佔用NameNode大量的內存來儲存文件目錄和塊信息。這樣是不可取的,因爲NameNode的內存總量有限。
- 小文件的存儲尋址時間會超過讀取時間,違反了HDFS的設計目標
- 不支持併發寫入,文件隨機修改
- 文件寫入時只能單線程操作,不允許多個線程同時寫文件
- 僅支持數據追加,不支持文件的隨機修改