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