Hadoop Distributed File System,分布式文件系統(tǒng)
Block數(shù)據(jù)塊;
基本存儲單位,一般大小為64M(配置大的塊主要是因?yàn)椋?br>1)減少搜尋時間,一般硬盤傳輸速率比尋道時間要快,大的塊可以減少尋道時間;
2)減少管理塊的數(shù)據(jù)開銷,每個塊都需要在NameNode上有對應(yīng)的記錄;
3)對數(shù)據(jù)塊進(jìn)行讀寫,減少建立網(wǎng)絡(luò)的連接成本)
一個大文件會被拆分成一個個的塊,然后存儲于不同的機(jī)器。如果一個文件少于Block大小,那么實(shí)際占用的空間為其文件的大小
基本的讀寫單位,類似于磁盤的頁,每次都是讀寫一個塊
HDFS2.x以后的block默認(rèn)128M(截止至hadoop3.3.5版本仍是128M)
NameNode
存儲文件的metadata,運(yùn)行時所有數(shù)據(jù)都保存到內(nèi)存,整個HDFS可存儲的文件數(shù)受限于NameNode的內(nèi)存大小
一個Block在NameNode中對應(yīng)一條記錄(一般一個block占用150字節(jié)),如果是大量的小文件,會消耗大量內(nèi)存。同時map task的數(shù)量是由splits來決定的,所以用MapReduce處理大量的小文件時,就會產(chǎn)生過多的map task,線程管理開銷將會增加作業(yè)時間。處理大量小文件的速度遠(yuǎn)遠(yuǎn)小于處理同等大小的大文件的速度。因此Hadoop建議存儲大文件
數(shù)據(jù)會定時保存到本地磁盤,但不保存block的位置信息,而是由DataNode注冊時上報和運(yùn)行時維護(hù)(NameNode中與DataNode相關(guān)的信息并不保存到NameNode的文件系統(tǒng)中,而是NameNode每次重啟后,動態(tài)重建)
Secondary NameNode
DataNode
保存具體的block數(shù)據(jù)
負(fù)責(zé)數(shù)據(jù)的讀寫操作和復(fù)制操作
DataNode啟動時會向NameNode報告當(dāng)前存儲的數(shù)據(jù)塊信息,后續(xù)也會定時報告修改信息
更多建議: