HDFS架構與原理


HDFS

HDFS 全稱hadoop分布式文件系統,其最主要的作用是作為 Hadoop 生態中各系統的存儲服務

特點

優點

• 高容錯、高可用、高擴展  -數據冗余多副本,副本丟失后自動恢復   -NameNode HA、安全模式  -10K節點規模

• 海量數據存儲   -典型文件大小GB~TB,百萬以上文件數量 PB以上數據規模

• 構建成本低、安全可靠   -構建在廉價的商用服務器上   -提供了容錯和恢復機制

• 適合大規模離線批處理   -流式數據訪問         -數據位置暴露給計算框架

缺點

• 不適合低延遲數據訪問

• 不適合大量小文件存儲 -元數據占用NameNode大量內存空間 -磁盤尋道時間超過讀取時間

• 不支持並發寫入 -一個文件同時只能有一個寫入者

• 不支持文件隨機修改 -僅支持追加寫入

架構圖

Namenode 主節點

管理HDFS文件系統的命名空間、維護元數據信息

處理客戶端讀寫請求

Datanode 從節點

存儲數據(Block)

集群啟動時, DataNode向NameNode匯報Block列表信息 集群運行期間, 通過心跳機制定期(默認3秒) 與NameNode保持通信

Secondary node 

主要存在於HDFS1.x架構當中, 並不是NameNode的熱備,只是在namende發生故障的時候快速切換

輔助NameNode完成元數據文件fsimage、 edits的定期合並

HDFS存儲機制:元數據

元數據(Metadata)

信息存放在NameNode內存當中 包含:HDFS中文件及目錄的基本屬性信息(如擁有者、權限信息創建時間等)、文件有哪些block構成、 以及block的位置存放信息。

元數據信息持久化

fsimage(元數據鏡像檢查點文件)

edits(編輯日志文件,記錄寫操作)

注:block的位置信息並不會做持久化,僅僅只是在DataNode啟動匯報給NameNode,存放在NameNode內存空間內

HDFS存儲機制:block

Block

• Block是HDFS的最小存儲單元 • Block的大小 -默認大小:128M(HDFS 1.x中,默認64M)

-若文件大小不足128M,則會單獨成為一個block -實質上就是Linux相應目錄下的普通文件

-名稱格式:blk_xxxxxxx

Block和元數據分開存儲,Block存儲於DataNode,元數據存儲於NameNode

• Block多副本 -默認副本數:3

-機架感知:將副本存儲到不同的機架上,實現數據的高容錯

-副本均勻分布:提高訪問帶寬和讀取性能,實現負載均衡,避免出現數據傾斜

HDFS存儲機制:讀寫流程

寫流程

• 客戶端發送創建文件指令給分布式文件系統

• 文件系統告知namenode • 檢查權限,查看文件是否存在

• EditLog增加記錄 • 返回輸出流對象

• 客戶端往輸出流中寫入數據,分成一個個數據包

• 根據namenode分配,輸出流往datanode寫數據

• 多個datanode構成一個管道pipeline,輸出流寫第一個,后面的轉發

• 每個datanode寫完一個塊后,返回確認信息

• 寫完數據,關閉輸出流

• 發送完成信號給namenode

讀流程

• 客戶端發送打開文件指令給分布式文件系統

• 文件系統訪問namenode,獲得這個文件的數據塊位置列表,返回輸入流對象

• 客戶端從輸入流中讀取數據

• 輸入流從各個datanode讀取數據

• 關閉輸入流

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM