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