NameNode&Secondary NameNode工作機制
1)第一階段:namenode啟動
(1)第一次啟動namenode格式化后抗碰,創(chuàng)建fsimage和edits文件。如果不是第一次啟動悔雹,直接加載編輯日志和鏡像文件到內(nèi)存。
(2)客戶端對元數(shù)據(jù)進行增刪改的請求欣喧。
(3)namenode記錄操作日志腌零,更新滾動日志。
(4)namenode在內(nèi)存中對數(shù)據(jù)進行增刪改查续誉。
2)第二階段:Secondary NameNode工作
(1)Secondary NameNode詢問namenode是否需要checkpoint莱没。直接帶回namenode是否檢查結(jié)果。
(2)Secondary NameNode請求執(zhí)行checkpoint酷鸦。
(3)namenode滾動正在寫的edits日志饰躲。
(4)將滾動前的編輯日志和鏡像文件拷貝到Secondary NameNode。
(5)Secondary NameNode加載編輯日志和鏡像文件到內(nèi)存臼隔,并合并嘹裂。
(6)生成新的鏡像文件fsimage.chkpoint。
(7)拷貝fsimage.chkpoint到namenode摔握。
(8)namenode將fsimage.chkpoint重新命名成fsimage寄狼。
鏡像文件和編輯日志文件
1)概念
namenode被格式化之后,將在/opt/module/hadoop-2.7.2/data/tmp/dfs/name/current目錄中產(chǎn)生如下文件
edits_0000000000000000000
fsimage_0000000000000000000.md5
seen_txid
VERSION
(1)Fsimage文件:HDFS文件系統(tǒng)元數(shù)據(jù)的一個永久性的檢查點,其中包含HDFS文件系統(tǒng)的所有目錄和文件idnode的序列化信息泊愧。
(2)Edits文件:存放HDFS文件系統(tǒng)的所有更新操作的路徑伊磺,文件系統(tǒng)客戶端執(zhí)行的所有寫操作首先會被記錄到edits文件中。
(3)seen_txid文件保存的是一個數(shù)字删咱,就是最后一個edits_的數(shù)字
(4)每次Namenode啟動的時候都會將fsimage文件讀入內(nèi)存屑埋,并從00001開始到seen_txid中記錄的數(shù)字依次執(zhí)行每個edits里面的更新操作,保證內(nèi)存中的元數(shù)據(jù)信息是最新的痰滋、同步的摘能,可以看成Namenode啟動的時候就將fsimage和edits文件進行了合并。
滾動編輯日志
正常情況HDFS文件系統(tǒng)有更新操作時敲街,就會滾動編輯日志团搞。也可以用命令強制滾動編輯日志。
1)滾動編輯日志(前提必須啟動集群)
[root@liyahui-01 hadoop]$ hdfs dfsadmin -rollEdits
2)鏡像文件什么時候產(chǎn)生
Namenode啟動時加載鏡像文件和編輯日志;
chkpoint檢查時間參數(shù)設置
(1)通常情況下多艇,SecondaryNameNode每隔一小時執(zhí)行一次逻恐。
[hdfs-default.xml]
<property>
<name>dfs.namenode.checkpoint.period</name>
<value>3600</value>
</property>
(2)一分鐘檢查一次操作次數(shù),當操作次數(shù)達到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>
SecondaryNameNode目錄結(jié)構(gòu)
Secondary NameNode用來監(jiān)控HDFS狀態(tài)的輔助后臺程序梢莽,每隔一段時間獲取HDFS元數(shù)據(jù)的快照。
在/opt/module/hadoop-2.7.2/data/tmp/dfs/namesecondary/current這個目錄中查看SecondaryNameNode目錄結(jié)構(gòu)奸披。
edits_0000000000000000001-0000000000000000002
fsimage_0000000000000000002
fsimage_0000000000000000002.md5
VERSION
SecondaryNameNode的namesecondary/current目錄和主namenode的current目錄的布局相同昏名。
好處:在主namenode發(fā)生故障時(假設沒有及時備份數(shù)據(jù)),可以從SecondaryNameNode恢復數(shù)據(jù)阵面。
Namenode故障處理方法
Namenode故障后轻局,可以采用如下兩種方法恢復數(shù)據(jù)。
方法一:將SecondaryNameNode中數(shù)據(jù)拷貝到namenode存儲數(shù)據(jù)的目錄样刷;
方法二:使用-importCheckpoint選項啟動namenode守護進程仑扑,從而將SecondaryNameNode中數(shù)據(jù)拷貝到namenode目錄中。
集群安全模式操作
1)概述
Namenode啟動時置鼻,首先將映像文件(fsimage)載入內(nèi)存镇饮,并執(zhí)行編輯日志(edits)中的各項操作。一旦在內(nèi)存中成功建立文件系統(tǒng)元數(shù)據(jù)的映像箕母,則創(chuàng)建一個新的fsimage文件和一個空的編輯日志储藐。此時,namenode開始監(jiān)聽datanode請求嘶是。但是此刻钙勃,namenode運行在安全模式,即namenode的文件系統(tǒng)對于客戶端來說是只讀的聂喇。
系統(tǒng)中的數(shù)據(jù)塊的位置并不是由namenode維護的辖源,而是以塊列表的形式存儲在datanode中。在系統(tǒng)的正常操作期間,namenode會在內(nèi)存中保留所有塊位置的映射信息克饶。在安全模式下酝蜒,各個datanode會向namenode發(fā)送最新的塊列表信息,namenode了解到足夠多的塊位置信息之后矾湃,即可高效運行文件系統(tǒng)秕硝。
如果滿足“最小副本條件”,namenode會在30秒鐘之后就退出安全模式洲尊。所謂的最小副本條件指的是在整個文件系統(tǒng)中99.9%的塊滿足最小副本級別(默認值:dfs.replication.min=1)。在啟動一個剛剛格式化的HDFS集群時奈偏,因為系統(tǒng)中還沒有任何塊坞嘀,所以namenode不會進入安全模式。
2)基本語法
集群處于安全模式惊来,不能執(zhí)行重要操作(寫操作)丽涩。集群啟動完成后,自動退出安全模式裁蚁。
(1)bin/hdfs dfsadmin -safemode get (功能描述:查看安全模式狀態(tài))
(2)bin/hdfs dfsadmin -safemode enter (功能描述:進入安全模式狀態(tài))
(3)bin/hdfs dfsadmin -safemode leave (功能描述:離開安全模式狀態(tài))
(4)bin/hdfs dfsadmin -safemode wait (功能描述:等待安全模式狀態(tài))
Attention Please--文章來自互聯(lián)網(wǎng)資料整理矢渊,如有雷同,純屬李小李抄襲枉证,如有侵權(quán)請聯(lián)系刪除 From 李小李