真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

JavaHadoop的NameNode和SecondaryNameNode有什么用

這篇文章主要講解了“Java Hadoop的NameNode和SecondaryNameNode有什么用”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Java Hadoop的NameNode和SecondaryNameNode有什么用”吧!

創(chuàng)新互聯(lián)公司 - 成都移動機(jī)房,四川服務(wù)器租用,成都服務(wù)器租用,四川網(wǎng)通托管,綿陽服務(wù)器托管,德陽服務(wù)器托管,遂寧服務(wù)器托管,綿陽服務(wù)器托管,四川云主機(jī),成都云主機(jī),西南云主機(jī),成都移動機(jī)房,西南服務(wù)器托管,四川/成都大帶寬,大帶寬服務(wù)器,四川老牌IDC服務(wù)商

NN和2NN工作機(jī)制

思考:NameNode中的元數(shù)據(jù)是存儲在哪里的?

如果我們假設(shè)元數(shù)據(jù)存儲在NameNode節(jié)點(diǎn)的磁盤中,因?yàn)榻?jīng)常需要進(jìn)行隨機(jī)訪問,還有響應(yīng)客戶請求,那么效率肯定很低。因此,元數(shù)據(jù)需要放在內(nèi)存中。但如果只存在內(nèi)存中,一旦斷電,元數(shù)據(jù)就會丟失,整個集群就不能工作了。因此就產(chǎn)生在磁盤中備份元數(shù)據(jù)的FsImage中。

這樣又會有新的問題出現(xiàn),當(dāng)內(nèi)存中的元數(shù)據(jù)更新時,如果同時更新FsImage,就會導(dǎo)致效率過低,但如果不更新,又會發(fā)生一致性問題,一旦NameNode節(jié)點(diǎn)斷電,就會產(chǎn)生數(shù)據(jù)丟失。因此,引入Edits文件(這個文件只進(jìn)行追加操作,效率很高)。每當(dāng)元數(shù)據(jù)有更新或者添加元數(shù)據(jù)時,先把日志記錄到Edits中,然后修改內(nèi)存中的元數(shù)據(jù)。這樣,一旦NameNode節(jié)點(diǎn)斷電,可以通過FsImage和Edits的合并,合成元數(shù)據(jù)。

但是,如果長時間添加數(shù)據(jù)到Edits中,又會導(dǎo)致該文件數(shù)據(jù)過大,從而效率降低,并且一旦斷電,恢復(fù)元數(shù)據(jù)需要的時間過長。因此,需要定期進(jìn)行FsImage和Edits的合并,如果這個操作由NameNode節(jié)點(diǎn)完成,又會效率過低。于是乎第二主角登場了,引入一個新的節(jié)點(diǎn)SecondaryNamenode,他的作用就是專門用于FsImage和Edits的合并。

工作機(jī)制如圖所示

Java Hadoop的NameNode和SecondaryNameNode有什么用

第一階段:namenode啟動

(1)第一次啟動namenode格式化后(format),創(chuàng)建fsimage鏡像和edits編輯日志文件。如果不是第一次啟動,會直接加載編輯日志和鏡像文件到內(nèi)存。

(2)客戶端請求元數(shù)據(jù)進(jìn)行增刪改。

(3)namenode對操作記錄日志,更新滾動日志。

(4)然后,namenode對內(nèi)存的數(shù)據(jù)進(jìn)行增刪改

第二階段:Secondary NameNode工作

(1)Secondary NameNode詢問namenode是否需要checkpoint,就是是否需要檢查。直接帶回namenode是否檢查結(jié)果。

(2)Secondary NameNode請求執(zhí)行checkpoint,也就是進(jìn)行檢查。

(3)namenode滾動正在寫的edits編輯日志

(4)將滾動前的edits編輯日志和fsimage鏡像文件拷貝到Secondary NameNode節(jié)點(diǎn)

(5)Secondary NameNode加載編輯日志和鏡像文件到內(nèi)存,并且進(jìn)行合并

(6)生成新的鏡像文件fsimage.chkpoint文件

(7)拷貝fsimage.chkpoint到namenode節(jié)點(diǎn)

(8)namenode將fsimage.chkpoint重新命名成fsimage,替換了原來的鏡像

NN和2NN工作機(jī)制詳解  Fsimage:NameNode內(nèi)存中元數(shù)據(jù)序列化后形成的文件。Edits:記錄客戶端更新元數(shù)據(jù)信息的每一步操作(可通過Edits運(yùn)算出元數(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中,因?yàn)椴樵儾僮鞑粫脑獢?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即可,因?yàn)楹喜⑦^的Edits中的元數(shù)據(jù)信息已經(jīng)被記錄在Fsimage中。

chkpoint檢查時間參數(shù)設(shè)置

(1)通常情況下,SecondaryNameNode每隔一小時執(zhí)行一次。

配置文件:hdfs-default.xml

  dfs.namenode.checkpoint.period  3600

(2)一分鐘檢查一次操作次數(shù),當(dāng)操作次數(shù)達(dá)到1百萬時,SecondaryNameNode執(zhí)行一次。

  dfs.namenode.checkpoint.txns  1000000操作動作次數(shù)
 dfs.namenode.checkpoint.check.period  60 1分鐘檢查一次操作次數(shù)

感謝各位的閱讀,以上就是“Java Hadoop的NameNode和SecondaryNameNode有什么用”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Java Hadoop的NameNode和SecondaryNameNode有什么用這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!


本文名稱:JavaHadoop的NameNode和SecondaryNameNode有什么用
網(wǎng)站鏈接:http://weahome.cn/article/ieddio.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部