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