hadoop SecondNamenode詳解
SecondNamenode名字看起來很象是對第二個Namenode,要麼與Namenode一樣同時對外提供服務,要麼相當於Namenode的HA。
真正的瞭解了SecondNamenode以後,才發現事實並不是這樣的。
下面這段是Hadoop對SecondNamenode的準確定義:
* The Secondary Namenode is a helper to the primary Namenode.
* The Secondary is responsible for supporting periodic checkpoints
* of the HDFS metadata. The current design allows only one Secondary
* Namenode per HDFs cluster.
*
* The Secondary Namenode is a daemon that periodically wakes
* up (determined by the schedule specified in the configuration),
* triggers a periodic checkpoint and then goes back to sleep.
* The Secondary Namenode uses the ClientProtocol to talk to the
* primary Namenode.
SecondNamenode是對主Namenode的一個補充,它會週期的執行對HDFS後設資料的檢查點。
當前的設計僅僅允許每個HDFS只有單個SecondNamenode結點。
SecondNamenode是有一個後臺的程式,會定期的被喚醒(喚醒的週期依賴相關配置)執行檢查點任務,然後繼續休眠。
它使用ClientProtocol協議與主Namenode通訊。
1,檢查點到底是做什麼用的呢?
先拋開SecondNamenode不說,先介紹下Namenode中與檢查點相關的兩個檔案,以及他們之間的關係。
fsimage檔案與edits檔案是Namenode結點上的核心檔案。
Namenode中僅僅儲存目錄樹資訊,而關於BLOCK的位置資訊則是從各個Datanode上傳到Namenode上的。
Namenode的目錄樹資訊就是物理的儲存在fsimage這個檔案中的,當Namenode啟動的時候會首先讀取fsimage這個檔案,將目錄樹資訊裝載到記憶體中。
而edits儲存的是日誌資訊,在Namenode啟動後所有對目錄結構的增加,刪除,修改等操作都會記錄到edits檔案中,並不會同步的記錄在fsimage中。
而當Namenode結點關閉的時候,也不會將fsimage與edits檔案進行合併,這個合併的過程實際上是發生在Namenode啟動的過程中。
也就是說,當Namenode啟動的時候,首先裝載fsimage檔案,然後在應用edits檔案,最後還會將最新的目錄樹資訊更新到新的fsimage檔案中,然後啟用新的edits檔案。
整個流程是沒有問題的,但是有個小瑕疵,就是如果Namenode在啟動後發生的改變過多,會導致edits檔案變得非常大,大得程度與Namenode的更新頻率有關係。
那麼在下一次Namenode啟動的過程中,讀取了fsimage檔案後,會應用這個無比大的edits檔案,導致啟動時間變長,並且不可能控,可能需要啟動幾個小時也說不定。
Namenode的edits檔案過大的問題,也就是SecondeNamenode要解決的主要問題。
SecondNamenode會按照一定規則被喚醒,然後進行fsimage檔案與edits檔案的合併,防止edits檔案過大,導致Namenode啟動時間過長。
2,檢查點被喚醒的條件?
以前的文章裡面曾經寫過相關內容,這裡在回顧一下。
控制檢查點的引數有兩個,分別是:
fs.checkpoint.period:單位秒,預設值3600,檢查點的間隔時間,當距離上次檢查點執行超過該時間後啟動檢查點
fs.checkpoint.size:單位位元組,預設值67108864,當edits檔案超過該大小後,啟動檢查點
上面兩個條件是或的關係,主要滿足啟動一個條件,檢查點即被喚醒
3,檢查點執行的過程?
a,初始化檢查點
b,通知Namenode啟用新的edits檔案
c,從Namenode下載fsimage和edits檔案
d,呼叫loadFSImage裝載fsimage
e,呼叫loadFSEdits應用edits日誌
f,儲存合併後的目錄樹資訊到新的image檔案中
g,將新產生的image上傳到Namenode中,替換原來的image檔案
h,結束檢查點
4,SecondNamenode最好於Namenode部署到不同的伺服器
應該在merge的過程中,SecondNamenode對記憶體的需求與Namenode是相同的,所以對於那些大型的生產系統中,如果將兩者部署到同臺伺服器上,在記憶體上會出現瓶頸。
所以最好將他們分別部署到不同的伺服器。
修改hadoop配置檔案的master檔案。
5,關於SecondNamenode的思考
其實檢查點的執行過程最好在Namenode結點搞定,也就說能有個任務定期的將Namenode的記憶體結果重新整理到fsimage中,而不是僅僅在Namenode啟動的時候才進行一次合併。
如果可以實現定期的對Namenode執行檢查點,那麼SecondNamenode完全沒有存在的必要了。
或者在SecondNamenode方面實現增量的重新整理,每次不需要將fsimage整個裝載到記憶體中,而僅僅將增量重新整理就OK了。
不過這樣會讓系統變得複雜一些,可以參考oracle中的檢查點的處理,還是有些複雜的。
簡單就是美?!!
FYI:在masters檔案中配置second namenode後,日誌報java.net.BindException: Cannot assign requested address異常,而且second namenode啟動失敗,反覆測試發現是hdfs-site.xml中的dfs.secondary.http.address沒有更改IP,更改成masters中配置的IP後叢集啟動正常。
<property>
<name>dfs.secondary.http.address</name>
<value>second_namenode:50090</value>
<description>
The secondary namenode http server address and port.
If the port is 0 then the server will start on a free port.
</description>
</property>
相關文章
- Hadoop Shuffle詳解Hadoop
- hadoop命令詳解Hadoop
- hadoop Shell命令詳解Hadoop
- Hadoop中的Shuffle詳解Hadoop
- Hadoop下面WordCount執行詳解Hadoop
- Hadoop 新 MapReduce 框架 Yarn 詳解Hadoop框架Yarn
- Hadoop 資料遷移用法詳解Hadoop
- Hadoop2之NameNode HA詳解Hadoop
- Hadoop配置hdfs-site.xml詳解HadoopXML
- 大資料hadoop入門之hadoop家族產品詳解大資料Hadoop
- Hadoop框架:DataNode工作機制詳解Hadoop框架
- Hadoop框架:NameNode工作機制詳解Hadoop框架
- Hadoop-2.6.0-cdh5.7.0安裝詳解HadoopH5
- hadoop 0.20.2偽分散式安裝詳解Hadoop分散式
- hadoop叢集多節點安裝詳解Hadoop
- Hadoop配置core-site.xml檔案詳解HadoopXML
- Hadoop框架:HDFS讀寫機制與API詳解Hadoop框架API
- Linux下安裝Hadoop 詳解及WordCount執行LinuxHadoop
- Hadoop回收站及fs.trash引數詳解Hadoop
- 單機版搭建Hadoop環境圖文教程詳解Hadoop
- hadoop streaming 按欄位排序與輸出分割詳解Hadoop排序
- Hadoop Yarn框架詳細解析HadoopYarn框架
- Hadoop叢集安裝詳細教程Hadoop
- 大資料學習筆記之Hadoop安裝步驟詳解大資料筆記Hadoop
- 詳解Window10下使用IDEA搭建Hadoop開發環境IdeaHadoop開發環境
- hadoop配置檔案詳解、安裝及相關操作補充版Hadoop
- 詳解:Hadoop生態元件Yarn之長期執行服務支援篇!Hadoop元件Yarn
- 【大資料】Linux下安裝Hadoop(2.7.1)詳解及WordCount執行大資料LinuxHadoop
- hadoop學習-HDFS的詳細概述Hadoop
- 史上最詳細的Hadoop環境搭建Hadoop
- Hadoop入門(二)之 HDFS 詳細解析Hadoop
- Hadoop2.3.0詳細安裝過程Hadoop
- **大資料hadoop瞭解**大資料Hadoop
- 《Hadoop實戰》封面解讀Hadoop
- Hadoop 學習系列(二)之 HDFS 詳細解析Hadoop
- Hadoop 學習系列(三)之 YARN 詳細解析HadoopYarn
- Hadoop3.x完全分散式搭建(詳細)Hadoop分散式
- 【史上最全】Hadoop 核心 - HDFS 分散式檔案系統詳解(上萬字建議收藏)Hadoop分散式