HDFS(HadoopDistributedFileSystem),是一個適合運行在通用硬件(commodityhardware)上的分布式文件系統(tǒng),是Hadoop的核心子項目,是基于流數(shù)據(jù)模式訪問和處理超大文件的需求而開發(fā)的。該系統(tǒng)仿效了谷歌文件系統(tǒng)(GFS),是GFS的一個簡化和開源版本。
HDFS的主要架構(gòu)
HDFSClient(客戶端):從NameNode獲取文件的位置信息,再從DataNode讀取或者寫入數(shù)據(jù)。此外,client在數(shù)據(jù)存儲時,負責文件的分割;
NameNode(元數(shù)據(jù)節(jié)點):管理名稱空間、數(shù)據(jù)塊(Block)映射信息、配置副本策略、處理客戶端讀寫請求;
DataNode(存儲節(jié)點):負責執(zhí)行實際的讀寫操作,存儲實際的數(shù)據(jù)塊,同一個數(shù)據(jù)塊會被存儲在多個DataNode上
SecondaryNameNode:定期合并元數(shù)據(jù),推送給NameNode,在緊急情況下,可輔助NameNode的HA恢復。
HDFS的特點(VsGFS)
分塊更大,每個數(shù)據(jù)塊默認128MB;
不支持并發(fā),同一時刻只允許一個寫入者或追加者;
過程一致性,寫入數(shù)據(jù)的傳輸順序與最終寫入順序一致;
MasterHA,2.X版本支持兩個NameNode,(分別處于AcTIve和Standby狀態(tài)),故障切換時間一般幾十秒到數(shù)分鐘
HDFS適合的應(yīng)用場景:
適用于大文件、大數(shù)據(jù)處理,處理數(shù)據(jù)達到GB、TB、甚至PB級別的數(shù)據(jù)。
適合流式文件訪問,一次寫入,多次讀取。
文件一旦寫入不能修改,只能追加。
HDFS不適合的場景:
低延時數(shù)據(jù)訪問。
小文件存儲
并發(fā)寫入、文件隨機修改