HDFS Namenode啟動過程


Namenode保存文件系統元數據鏡像,namenode在內存及磁盤(fsimage和editslog)上分別存在一份元數據鏡像文件,內存中元數據鏡像保證了hdfs文件系統文件訪問效率,磁盤上的元數據鏡像保證了hdfs文件系統的安全性。

namenode在磁盤上的兩類文件組成:

fsimage文件:保存文件系統至上次checkpoint為止目錄和文件元數據。

edits文件:保存文件系統從上次checkpoint起對hdfs的所有操作記錄日志信息。

fsimage和editlog文件可以在本地文件系統看到,如下圖:

image

首次安裝格式化(format)主要作用是在本地文件系統生成fsimage文件。

1、首此啟動hdfs過程:

啟動namenode:

讀取fsimage生成內存中元數據鏡像。

啟動datanode:

向namenode注冊;

向namenode發送blockreport。

啟動成功后,client可以對HDFS進行目錄創建、文件上傳、下載、查看、重命名等操作,更改namespace的操作將被記錄在edits文件中。

2、之后啟動HDFS文件系統過程:

啟動namenode:

讀取fsimage元數據鏡像文件,加載到內存中。

讀取editlog日志文件,加載到內存中,使當前內存中元數據信息與上次關閉系統時保持一致。然后在磁盤上生成一份同內存中元數據鏡像相同的fsimage文件,同時生成一個新的null的editlog文件用於記錄以后的hdfs文件系統的更改。

啟動datanode:

向namenode注冊;

向namenode發送blockreport。

啟動成功后,client可以對HDFS進行目錄創建、文件上傳、下載、查看、重命名等操作,更改namespace的操作將被記錄在editlog文件中。

3、SecondaryNameNode

輔助namenode,不能代替namenode。

SecondaryNameNode的主要作用是用於合並fsimage和editlog文件。在沒有SecondaryNameNode守護進程的情況下,從namenode啟動開始至namenode關閉期間所有的HDFS更改操作都將記錄到editlog文件,這樣會造成巨大的editlog文件,所帶來的直接危害就是下次啟動namenode過程會非常漫長。

在啟動SecondaryNameNode守護進程后,每當滿足一定的觸發條件(每3600s、文件數量增加100w等),SecondaryNameNode都會拷貝namenode的fsimage和editlog文件到自己的目錄下,首先將fsimage加載到內存中,然后加載editlog文件到內存中合並fsimage和editlog文件為一個新的fsimage文件,然后將新的fsimage文件拷貝回namenode目錄下。並且聲稱新的editlog文件用於記錄DFS的更改。

4、安全模式

在啟動namenode至所有datanode啟動完成前的階段成為安全模式。在安全模式下,client只能讀取部分HDFS文件信息,不允許client對HDFS的任何更改操作,比如創建目錄、上傳文件、刪除文件、重命名文件等。

namenode推出安全模式條件需要滿足以下條件:

datanodes blocks/total blocks >= 99.999% + 30s(緩沖時間) 此時安全模式才會推出

Secondary namenode工作流程:

1)secondary通知namenode切換edits文件

2)secondary通過http請求從namenode獲得fsimage和edits文件

3)secondary將fsimage載入內存,然后開始合並edits

4)secondary將新的fsimage發回給namenode

5)namenode用新的fsimage替換舊的fsimage

Secondary namenode工作流程通過一張圖可以表示為:

clip_image003

手工維護安全模式指令:

bin/hdfs dfsadmin -safemode <enter | leave | get | wait>

例如:

[hadoop@db01 ~]$ hdfs dfsadmin -safemode get

Safe mode is OFF


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM