?
理解這兩個(gè)概念,對(duì)于理解Hadoop是如何管理備份,Secondary Namenode、Checkpoint Namenode和Backup Node如何工作的很重要。
- fsimage: 文件是文件系統(tǒng)元數(shù)據(jù)的一個(gè)永久性檢查點(diǎn),包含文件系統(tǒng)中的所有目錄和文件idnode的序列化信息。
- edits: 文件系統(tǒng)的寫操作首先把它記錄在edit中
將文件系統(tǒng)個(gè)元數(shù)據(jù)操作分開操作,是為了提升內(nèi)存的處理效率。如果不分開處理,即所有的寫操作均記錄在一個(gè)文件中,比 如,fsimage中,那么每個(gè)操作都會(huì)對(duì)這個(gè)文件進(jìn)行修改,因?yàn)檫@個(gè)文件可能會(huì)很大,所以每次進(jìn)行寫操作的時(shí)候就會(huì)很慢,隨著fsimage越來越大, 速度便會(huì)越來越低。
Hadoop的解決方案是輔助Namenode節(jié)點(diǎn),文件系統(tǒng)的寫操作不是直接被修改到fsimage中,二是edits中,輔助Namenode 節(jié)點(diǎn)負(fù)責(zé)將兩者在自己的內(nèi)存中整合然后進(jìn)行相應(yīng)的替換操作,這樣會(huì)頻繁的對(duì)edits進(jìn)行修改而不是fsimage,而edits文件的大小是可以接受 的,而且大小也不會(huì)不斷增加。具體的checkpoint執(zhí)行過程如下:
?
以下即是checkpoint過程:
- 輔助Namenode請(qǐng)求主Namenode停止使用edits文件,暫時(shí)將新的寫操作記錄到一個(gè)新文件中,如edits.new。
- 輔助Namenode節(jié)點(diǎn)從主Namenode節(jié)點(diǎn)獲取fsimage和edits文件(采用HTTP GET)
- 輔助Namenode將fsimage文件載入到內(nèi)存,逐一執(zhí)行edits文件中的操作,創(chuàng)建新的fsimage文件
- 輔助Namenode將新的fsimage文件發(fā)送回主Namenode(使用HTTP POST)
- 主Namenode節(jié)點(diǎn)將從輔助Namenode節(jié)點(diǎn)接收的fsimage文件替換舊的fsimage文件,用步驟1產(chǎn)生的edits.new文件替換舊的edits文件(即改名)。同時(shí)更新fstime文件來記錄檢查點(diǎn)執(zhí)行的時(shí)間
注:從Hadoop0.21.0開始,輔助Namenode已經(jīng)放棄不用,由checkpoint節(jié)點(diǎn)取而代之,功能不變。新版本同時(shí)引入一種新的Namenode,名為BackupNode。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
