HDFS 整體架構(gòu)
HDFS 是一個(gè)主從 Master/Slave 架構(gòu)鱼填。一個(gè) HDFS 集群包含一個(gè) NameNode肮之,這是一個(gè) Master Server,用來管理文件系統(tǒng)的命名空間,以及調(diào)節(jié)客戶端對(duì)文件的訪問查刻。一個(gè) HDFS 集群還包括多個(gè) DataNode墨坚,用來存儲(chǔ)數(shù)據(jù)秧饮。
系統(tǒng)結(jié)構(gòu):
主要角色:
NameNode:Master節(jié)點(diǎn)映挂,大領(lǐng)導(dǎo)。1. 管理數(shù)據(jù)塊映射盗尸;2. 處理客戶端的讀寫請(qǐng)求柑船;3. 配置副本策略;4. 管理HDFS的名稱空間泼各。5. namenode 內(nèi)存中存儲(chǔ)的是 = fsimage + edits鞍时。
SecondaryNameNode:小弟,分擔(dān)大哥namenode的工作量扣蜻。SecondaryNameNode負(fù)責(zé)定時(shí)默認(rèn)1小時(shí)逆巍,從namenode上,獲取fsimage和edits來進(jìn)行合并莽使,然后再發(fā)送給namenode锐极。減少namenode的工作量。NameNode的冷備份芳肌。
DataNode:Slave節(jié)點(diǎn)灵再,奴隸,干活的亿笤。1. 存儲(chǔ)client發(fā)來的數(shù)據(jù)塊block翎迁;2. 執(zhí)行數(shù)據(jù)塊的讀寫操作。
fsimage:元數(shù)據(jù)鏡像文件(文件系統(tǒng)的目錄樹)
edits:元數(shù)據(jù)的操作日志(針對(duì)文件系統(tǒng)做的修改操作記錄)
存儲(chǔ)過程:
如有一個(gè)512M的test文件上傳到/wordcount/input/目錄中净薛,則文件會(huì)被分別切分成4塊汪榔,放置到三個(gè)DataNode中
若有一個(gè)另一個(gè)客戶端需要訪問test.txt文件(當(dāng)前test.txt文件并不是完整存在的,而是別分割為4塊肃拜,且存儲(chǔ)在三個(gè)DataNode中)痴腌,需要尋找到文件切塊的存儲(chǔ)DataNode位置。而namenode中則存儲(chǔ)了文件塊的路徑信息爆班。因此衷掷,客戶端訪問hdfs中的文件,則先需要訪問namenode中元數(shù)據(jù)信息柿菩。
多個(gè)副本在多個(gè)datanode中存儲(chǔ)可以保證文件系統(tǒng)的高可靠性和提高吞吐性戚嗅,HDFS中默認(rèn)一個(gè)文件塊具有三個(gè)副本。
主要特點(diǎn):
1枢舶、hdfs是通過分布式集群來存儲(chǔ)文件懦胞,為客戶端提供了一個(gè)便捷的訪問方式,就是一個(gè)虛擬的目錄結(jié)構(gòu)
2凉泄、文件存儲(chǔ)到hdfs集群中去的時(shí)候是被切分成block的
3躏尉、文件的block存放在若干臺(tái)datanode節(jié)點(diǎn)上
4、hdfs文件系統(tǒng)中的文件與真實(shí)的block之間有映射關(guān)系后众,由namenode管理
5胀糜、每一個(gè)block在集群中會(huì)存儲(chǔ)多個(gè)副本颅拦,好處是可以提高數(shù)據(jù)的可靠性,還可以提高訪問的吞吐量