HDFS核心组件
介紹HDFS核心組件–NameNode、Secondary NameNode、DataNode
NameNode
維護(hù)著HDFS中全部數(shù)據(jù)的元數(shù)據(jù),包括所存儲(chǔ)的文件和目錄的元數(shù)據(jù)。這些元數(shù)據(jù)主要包括文件創(chuàng)建/修改時(shí)間戳、訪問(wèn)控制列表、塊的副本信息以及文件當(dāng)前狀態(tài)。
控制著對(duì)數(shù)據(jù)的所有操作。在HDFS上的所有操作,都需要首先通過(guò)NameNode,然后再傳遞到Hadoop的相關(guān)組件。
向客戶端提供系統(tǒng)數(shù)據(jù)塊信息,以及應(yīng)該從哪個(gè)數(shù)據(jù)塊進(jìn)行讀/寫。
向DataNode發(fā)出一些特殊命令,如:刪除損壞的數(shù)據(jù)塊。
Secondary NameNode
作用:Secondary NameNode會(huì)周期性地從NameNode中獲取FSImage和EditLog,將兩個(gè)文件合并成新的FSImage后,替換NameNode中的原FsImage文件,以減少NameNode重啟更新FsImage文件的時(shí)間。
FSImage和EidtLog創(chuàng)建于部署Hadoop環(huán)境過(guò)程中的NameNode格式化(命令:hadoop namenode -format)。在HDFS中,FSImage和EidtLog存儲(chǔ)了有關(guān)NameNode的所有操作及整個(gè)集群的狀態(tài)元數(shù)據(jù),用于保持集群重啟之后的狀態(tài)和上次停止前的狀態(tài)一致1
- FSImage文件:HDFS文件系統(tǒng)存于硬盤中的所有元數(shù)據(jù)(即全量),里面記錄了重啟前HDFS文件系統(tǒng)中所有目錄和文件的序列化信息2
- EditLog文件:保存了重啟之后所有針對(duì)HDFS文件系統(tǒng)的操作(即增量),如增加文件、重命名文件、刪除目錄等操作信息2
啟動(dòng)Hadoop后,當(dāng)用戶或客戶端發(fā)出操作請(qǐng)求,NameNode都會(huì)將元數(shù)據(jù)寫入到EditLog中,在集群重啟時(shí)再將EditLog中的元數(shù)據(jù)依次寫入FSImage,并清空EditLog文件。EditLog作用如下圖所示。3:
只有在NameNode重啟時(shí),EditLog才會(huì)合并到FSImage文件中,從而得到一個(gè)文件系統(tǒng)的最新快照。但因?yàn)榧褐械腘ameNode很少重啟,這意味著當(dāng)NameNode運(yùn)行了很長(zhǎng)時(shí)間后,EditLog文件會(huì)變得很大。這將導(dǎo)致NameNode重啟會(huì)花費(fèi)很長(zhǎng)時(shí)間;如果NameNode掛掉,那將丟失大量元數(shù)據(jù)信息。
而Secondary NameNode周期性合并FSImage能很好的解決以上問(wèn)題,Secondary NameNode工作流程如下圖所示。
網(wǎng)頁(yè)端口查看Hadoop啟動(dòng)過(guò)程,http://localhost:50070
DataNode
存儲(chǔ)數(shù)據(jù),以塊(block)為單位存儲(chǔ)數(shù)據(jù),每個(gè)數(shù)據(jù)塊的大小默認(rèn)是64M或128M、256M
處理來(lái)自客戶端的讀/寫請(qǐng)求,DataNode負(fù)責(zé)數(shù)據(jù)塊的創(chuàng)建、復(fù)制和刪除。這些操作命令來(lái)自NameNode,并由DataNode執(zhí)行。
和NameNode通過(guò)heartbeat機(jī)制保持連接,周期性的向NameNode上報(bào)保存的塊block信息(block Report機(jī)制),若NameNode超過(guò)10分鐘沒(méi)有收到DataNode的heartbeat,則認(rèn)為其已經(jīng)Lost,并將Block的信息復(fù)制到其他DataNode上,以保證副本數(shù)。
HDFS 05 - HDFS 的元數(shù)據(jù)管理(FSImage、Edits、CheckPoint) - 瘦風(fēng) - 博客園 (cnblogs.com) ??
HDFS中Secondary NameNode和Standby NameNde的區(qū)別 - 簡(jiǎn)書 (jianshu.com) ?? ??
FSImage 和 EditsLog - 簡(jiǎn)書 (jianshu.com) ??
總結(jié)
 
                            
                        - 上一篇: Hadoop部署
- 下一篇: JS数据类型与分支结构
