當前位置:
首頁 >
hdfs安全模式退出_浅谈HDFS(二)之NameNode与SecondaryNameNode
發(fā)布時間:2024/4/14
38
豆豆
生活随笔
收集整理的這篇文章主要介紹了
hdfs安全模式退出_浅谈HDFS(二)之NameNode与SecondaryNameNode
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
NN與2NN工作機制
思考:NameNode中的元數(shù)據(jù)是存儲在哪里的?- 假設(shè)存儲在NameNode節(jié)點的硬盤中,因為經(jīng)常需要隨機訪問和響應(yīng)客戶請求,必然效率太低,所以是存儲在內(nèi)存中的
- 但是,如果存儲在內(nèi)存中,一旦斷電,元數(shù)據(jù)丟失,整個集群便無法工作,因此會在硬盤中產(chǎn)生備份元數(shù)據(jù)的Fsimage
- 但是這樣又會有新的問題出現(xiàn),當內(nèi)存中的元數(shù)據(jù)更新時,需要同時更新Fsimage,否則會發(fā)生一致性的問題;
- 但要更新的話,又會導(dǎo)致效率過低
- 因此,又引入了Edits文件,用來記錄客戶端更新元數(shù)據(jù)的每一步操作(只進行追加操作,效率很高),每當元數(shù)據(jù)有更新時,就把更新的操作記錄到Edits中,Edits也存放在硬盤中
- 這樣,一旦NameNode節(jié)點斷電,可以通過Fsimage和Edits合并,生成最新的元數(shù)據(jù)
- 如果長時間一直添加操作數(shù)據(jù)到Edits,會導(dǎo)致文件數(shù)據(jù)過大,效率降低,而一旦斷電會造成恢復(fù)時間過長,因此需要對Fsimage與Edits定期合并
- 而如果這些操作都交給NameNode節(jié)點完成,則又會造成效率降低
- 因此引入了一個輔助NameNode的新的節(jié)點SecondaryNameNode,專門用于Fsimage和Edits的合并
Fsimage與Edits解析
- fsimage:HDFS文件系統(tǒng)元數(shù)據(jù)的一個永久性的檢查點,其中包含HDFS文件系統(tǒng)的所有目錄和文件inode的序列化信息
- Edits(啟動NameNode時生成):存放HDFS文件系統(tǒng)所有更新操作,文件系統(tǒng)客戶端執(zhí)行的寫操作首先會被記錄到Edits文件中
- seen_txis:保存的時一個數(shù)字,是最新的edits_后的數(shù)字
- 每次NameNode啟動的時候都會將Fsimage文件讀入內(nèi)存,加載Edits文件里的更新操作,保證內(nèi)存中元數(shù)據(jù)的內(nèi)容是最新的,同步的
- 基本語法:hdfs oiv -p 文件類型 -i 鏡像文件 -o 轉(zhuǎn)換后文件輸出路徑
- 基本語法:hdfs oev -p 文件類型 -i 編輯日志 -o 轉(zhuǎn)換后文件輸出路徑
Checkpoint時間設(shè)置
默認情況下,SecondaryNameNode每隔一個小時或者當操作次數(shù)超過100萬次時執(zhí)行一次,但是操作次數(shù)的統(tǒng)計SecondaryNameNode自己做不到,需要借助NameNode,所以還有一個參數(shù)設(shè)置是namenode每隔一分鐘檢查一次操作次數(shù),當操作次數(shù)達到100萬時SecondaryNameNode開始執(zhí)行Checkpoint,三個參數(shù)的設(shè)置都在hdfs_site.xml配置文件中,配置如下:
# SecondaryNameNode每隔一個小時執(zhí)行一次 <property><name>dfs.namenode.checkpoint.period</name><value>3600</value> </property># SecondaryNameNode當操作次數(shù)超過100萬次時執(zhí)行一次 <property><name>dfs.namenode.checkpoint.txns</name><value>1000000</value> <description>操作動作次數(shù)</description> </property># NameNode一分鐘檢查一次操作次數(shù) <property><name>dfs.namenode.checkpoint.check.period</name><value>60</value> <description> 1分鐘檢查一次操作次數(shù)</description> </property >NameNode故障處理
NameNode故障后有兩種處理方式:
NameNode故障處理方式一:直接將SecondaryNameNode目錄下的數(shù)據(jù)直接拷貝到NameNode目錄下,然后重新啟動NameNodeNameNode故障處理方式二:使用-importCheckpoint選項啟動NameNode守護進程,從而將SecondaryNameNode目錄下的數(shù)據(jù)直接拷貝到NameNode目錄下
- 首先需要在hdfs_site.xml文件中添加如下配置
- 然后,如果SecondaryNameNode和NameNode不在一個主機節(jié)點上,需要將SecondaryNameNode存儲數(shù)據(jù)的目錄拷貝到NameNode存儲數(shù)據(jù)的平級目錄,并刪除in_use.lock文件
- 最后導(dǎo)入檢查點數(shù)據(jù)(等待一會兒ctrl + c結(jié)束掉)
- 注意:執(zhí)行完該命令后,觀察namenode已經(jīng)啟動(臨時啟動),而且每2分鐘檢查一次,如果確定已經(jīng)恢復(fù)了數(shù)據(jù),我們ctrl+c停止,然后自己手動起namenode
- ctrl+c之后,重啟namenode即可恢復(fù)數(shù)據(jù),但是并不能完全恢復(fù),可能會將最新的Edits文件中的操作丟失
集群安全模式
什么是安全模式
基本語法
- 集群處于安全模式時,不能執(zhí)行任何重要操作(寫操作)。
- 集群啟動完成后,自動退出安全模式
NameNode多目錄配置
- NameNode的本地目錄可以配置成多個,且每個目錄存放內(nèi)容相同,增加了可靠性,提高高可用性
- 具體需要在hdfs_site.xml中加入如下配置:
總結(jié)
以上是生活随笔為你收集整理的hdfs安全模式退出_浅谈HDFS(二)之NameNode与SecondaryNameNode的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 兔子生崽问题编程_贵阳在哪里可以学到好的
- 下一篇: 定位到某个单词_【侃侃单词】词根词缀记单