HDFS Namenode啓動過程

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

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

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

edits文件:保存文件系統從上次checkpoint起對hdfs的全部操做記錄日誌信息。spa

fsimage和editlog文件能夠在本地文件系統看到,以下圖:日誌

image

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

一、首此啓動hdfs過程:blog

啓動namenode:進程

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

啓動datanode:內存

向namenode註冊;

向namenode發送blockreport。

啓動成功後,client能夠對HDFS進行目錄建立、文件上傳、下載、查看、重命名等操做,更改namespace的操做將被記錄在edits文件中。

二、以後啓動HDFS文件系統過程:

啓動namenode:

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

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

啓動datanode:

向namenode註冊;

向namenode發送blockreport。

啓動成功後,client能夠對HDFS進行目錄建立、文件上傳、下載、查看、重命名等操做,更改namespace的操做將被記錄在editlog文件中。

三、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的更改。

四、安全模式

在啓動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

相關文章
相關標籤/搜索