Hadoop之NameNode和SecondaryNameNode工作机制详解
Hadoop之NameNode和SecondaryNameNode工作機(jī)制詳解
1. NN和2NN工作機(jī)制
NN和2NN工作機(jī)制,如下圖
第一階段:NameNode啟動
第二階段:Secondary NameNode工作
2. NN和2NN工作機(jī)制詳解
Fsimage:namenode內(nèi)存中元數(shù)據(jù)序列化后形成的文件。
Edits:記錄客戶端更新元數(shù)據(jù)信息的每一步操作(可通過Edits運算出元數(shù)據(jù))。
namenode啟動時,先滾動edits并生成一個空的edits.inprogress,然后加載edits和fsimage到內(nèi)存中,此時namenode內(nèi)存就持有最新的元數(shù)據(jù)信息。client開始對namenode發(fā)送元數(shù)據(jù)的增刪改查的請求,這些請求的操作首先會被記錄的edits.inprogress中(查詢元數(shù)據(jù)的操作不會被記錄在edits中,因為查詢操作不會更改元數(shù)據(jù)信息),如果此時namenode掛掉,重啟后會從edits中讀取元數(shù)據(jù)的信息。然后,namenode會在內(nèi)存中執(zhí)行元數(shù)據(jù)的增刪改查的操作。
由于edits中記錄的操作會越來越多,edits文件會越來越大,導(dǎo)致namenode在啟動加載edits時會很慢,所以需要對edits和fsimage進(jìn)行合并(所謂合并,就是將edits和fsimage加載到內(nèi)存中,照著edits中的操作一步步執(zhí)行,最終形成新的fsimage)。secondarynamenode的作用就是幫助namenode進(jìn)行edits和fsimage的合并工作。
secondarynamenode首先會詢問namenode是否需要checkpoint(觸發(fā)checkpoint需要滿足兩個條件中的任意一個,定時時間到和edits中數(shù)據(jù)寫滿了)。直接帶回namenode是否檢查結(jié)果。secondarynamenode執(zhí)行checkpoint操作,首先會讓namenode滾動edits并生成一個空的edits.inprogress,滾動edits的目的是給edits打個標(biāo)記,以后所有新的操作都寫入edits.inprogress,其他未合并的edits和fsimage會拷貝到secondarynamenode的本地,然后將拷貝的edits和fsimage加載到內(nèi)存中進(jìn)行合并,生成fsimage.chkpoint,然后將fsimage.chkpoint拷貝給namenode,重命名為fsimage后替換掉原來的fsimage。namenode在啟動時就只需要加載之前未合并的edits和fsimage即可,因為合并過的edits中的元數(shù)據(jù)信息已經(jīng)被記錄在fsimage中。
3. Fsimage和Edits解析
概念:namenode被格式化之后,將在/hadoop-2.7.2/data/tmp/dfs/name/current目錄中產(chǎn)生如下文件
fsimage_0000000000000000000fsimage_0000000000000000000.md5seen_txidVERSION4. checkpoint時間設(shè)置
[hdfs-default.xml]
(2)一分鐘檢查一次操作次數(shù),當(dāng)操作次數(shù)達(dá)到1百萬時,SecondaryNameNode執(zhí)行一次。
<property><name>dfs.namenode.checkpoint.txns</name><value>1000000</value> <description>操作動作次數(shù)</description> </property><property><name>dfs.namenode.checkpoint.check.period</name><value>60</value> <description> 1分鐘檢查一次操作次數(shù)</description> </property >總結(jié)
以上是生活随笔為你收集整理的Hadoop之NameNode和SecondaryNameNode工作机制详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hadoop之HDFS读写数据流程
- 下一篇: Hadoop之DataNode工作机制