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