雲計算分佈式大數據實戰技術Hadoop:剖析NameNode和Secondary NameNode的工做機制和流程

本講主要剖析SecondaryNameNode。分佈式

 

雲計算分佈式大數據實戰技術Hadoop交流羣:312494188,天天都會在羣中發佈雲計算實戰性資料,歡迎你們加入!oop

 

Hadoop在啓動的時候,會啓動SecondaryNameNode,咱們使用JPS命令查看一下查看一下Hadoop啓動時啓動了那些進程:大數據

 

在咱們講解SecondaryNameNode的具體做用以前,咱們先看一看NameNode的工做特色和具體做用:雲計算

1,在Hadoop的集羣中,有NameNode和DataNode之分,在運行時DataNode能夠有不少個,但NameNode只有一個;spa

2,NameNode保存的是Hadoop集羣的metadata,即文件系統的元數據,包含整個文件系統的目錄結構,每個目錄有哪些文件,每一個文件有哪些分塊,每一個分塊保存在哪個DataNode上面;blog

3,NameNode在內存中保存metadata,這樣能夠快速的處理客戶端對數據的「讀請求」;進程

4,可是內存中的數據是容易丟失的,例如掉電時,因此咱們必須在磁盤上有metadata的副本;內存

5,當有「寫請求」到來時,即要改變Hadoop的文件系統時,NameNode會首先寫editlog並主動同步到磁盤,成功後纔會修改內存中的metadata,而且返回給客戶端,客戶端在收到成功返回的信息後纔會寫數據到具體的DataNode上去;ci

6,Hadoop會在磁盤上維護一個fsimage的文件,該文件是NameNode中metedata的鏡像;同步

7,fsimage不會隨時與NameNode中的metedata保持一致,而是每隔一段時間經過合併editlog中的內容來更新;

8,合併的過程是比較消耗內存和CPU的操做,因此Hadoop就是用SecondaryNameNode專門用於更新fsimage文件;

 

下面咱們看看SecondaryNameNode的工做流程:

1,SecondaryNameNode通知PrimaryNameNode切換editlog;

2,SecondaryNameNode經過HTTP協議從PrimaryNameNode得到fsimage和editlog;

3,SecondaryNameNode將fsimage載入內存,而後開始合併editlog的操做;

4,SecondaryNameNode將合併後的新的fsimage發給PrimaryNameNode;

5,PrimaryNameNode收到SecondaryNameNode發過來的新的fsimage後會用新的fsimage替換舊的fsimage;

SecondaryNameNode合適觸發上述的工做流程呢?或者說checkpoint是什麼呢?知足如下的任何條件都會觸發SecondaryNameNode的工做流程:

1,fs.checkpoint.period 指定兩次checkpoint之間最大時間間隔,默認時間爲3600秒,即一個小時;

2,fs.checkpoint.size規定editlog文件的最大值,該文件的默認大小是64M,一旦超過這個值則強制觸發SecondaryNameNode的工做流程;

 

從Hadoop 2.X開始推出了Active-Backup NameNode的模式,即同時具備兩個NameNode:Active NameNode和Backup NameNode,當Acitive NameNode不可以正常提供服務是時候,Backup NameNode就能夠接替Acitive NameNode繼續爲客戶端提供服務,這樣就會更有力的保證Hadoop服務不會中斷。

你們能夠看出在Hadoop 1.X的版本時,整個Hadoop的正常工做極端的依賴於單一的Primary NameNode,當Primary NameNode出現問題的時候,整個Hadoop的文件系統就沒法給客戶端提供服務了,這對一些很是關鍵的應用是難以接受的,因此運行NameNode節點的機器的硬件須要很是好,例如磁盤的IO速度要很是快;

相關文章
相關標籤/搜索