產生背景:分布式文件管理系統,源自于Google的GFS(Goole File System)論文,GFS的開源克隆版
重點:分布式,易擴展(增加機器來增加存儲量,多副本)
HDFS架構
1.master(主節點 NameNode/NN)和多個salve(副節點 DataNode/DN)
一個文件按照一定規則拆分成多個Block (一般為128M為一塊)
NN:(1)負責客戶端請求的響應
?? ?? (2)負責元數據的管理【名稱,副本系數,Block存放的DN】
DN:(1)存儲用戶的文件隊形的數據塊(Block)
?? ?? (2)定期向NN發送信息,匯報其本身和所有Block,狀態
經典部署:NameNode+N個DataNode
副本存放策略:本Rack(機架)放置一個,另一機架放置在不同節點分別放置(不作要求總共為3份)
優點:
? ? 數據冗余,硬件容錯(block,多副本)
? ? 適合批處理
? ? 處理流式的數據訪問
? ? 適合存儲大文件
? ? 可構建在廉價機器
缺點:
? ? 不適合低延遲的數據訪問
? ? 不適合小文件存儲
? ? 并發寫入、文件隨機修改(只支持append追加)
組成結構:
? ? Client:客戶端用戶程序
?? ??? ??? ??? ??? ?切分文件成數據塊
?? ??? ??? ??? ?? ? 與NameNode交互,獲取文件的位置信息
?? ??? ??? ??? ?? ? 與DataNode交互,讀取對應數據塊
?? ??? ??? ??? ?? ? 管理和訪問HDFS
? ? NameNode(Master):集群管理者,負責者
?? ??? ??? ??? ??? ??? ??? ?? ???? ??? ?管理HDFS名稱空間
?? ??? ??? ??? ??? ??? ??? ?? ? ?? ??? ?管理數據塊的映射關系
?? ??? ??? ??? ??? ??? ??? ?? ? ?? ??? ?配合副本策略
?? ??? ??? ??? ??? ??? ??? ?? ? ?? ??? ?客戶端的讀寫請求
? ? SecondaryNameNode:輔助NameNode
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?? ? 分擔工作量
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?? ? 定期合并image鏡像文件和edits日志文件,并推送給NameNode
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?? ? 緊急情況恢復NameNode
? ? DataNode(Slave):實際存儲數據
?? ??? ??? ??? ??? ??? ?? ? ?? ??? ?存儲實際的數據塊
?? ??? ??? ??? ??? ??? ??? ??? ?? ? 執行數據塊的讀寫操作?
解決NameNode單點故障:
?? ?namdNode(active)與nameNode(standby(備用))數據的共享存儲(zoookeeper解決兩者之間同步問題)
?? ?jnNode(日志,鏡像文件(fsimage))
?? ?zoookeeper接收nameNode的心跳,調控nameNode接替工作
?? ?HA架構擴展nameNode