中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java Hadoop的NameNode和SecondaryNameNode有什么用

發布時間:2021-12-09 14:26:15 來源:億速云 閱讀:167 作者:iii 欄目:大數據

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

NN和2NN工作機制

思考:NameNode中的元數據是存儲在哪里的?

如果我們假設元數據存儲在NameNode節點的磁盤中,因為經常需要進行隨機訪問,還有響應客戶請求,那么效率肯定很低。因此,元數據需要放在內存中。但如果只存在內存中,一旦斷電,元數據就會丟失,整個集群就不能工作了。因此就產生在磁盤中備份元數據的FsImage中。

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

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

工作機制如圖所示

Java Hadoop的NameNode和SecondaryNameNode有什么用

第一階段:namenode啟動

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

(2)客戶端請求元數據進行增刪改。

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

(4)然后,namenode對內存的數據進行增刪改

第二階段:Secondary NameNode工作

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

(2)Secondary NameNode請求執行checkpoint,也就是進行檢查。

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

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

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

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

(7)拷貝fsimage.chkpoint到namenode節點

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


NN和2NN工作機制詳解  

Fsimage:NameNode內存中元數據序列化后形成的文件。

Edits:記錄客戶端更新元數據信息的每一步操作(可通過Edits運算出元數據)。

NameNode啟動時,先滾動Edits并生成一個空的edits.inprogress,然后加載Edits和Fsimage到內存中,此時NameNode內存就持有最新的元數據信息。Client開始對NameNode發送元數據的增刪改的請求,這些請求的操作首先會被記錄到edits.inprogress中(查詢元數據的操作不會被記錄在Edits中,因為查詢操作不會更改元數據信息),如果此時NameNode掛掉,重啟后會從Edits中讀取元數據的信息。然后,NameNode會在內存中執行元數據的增刪改的操作。

由于Edits中記錄的操作會越來越多,Edits文件會越來越大,導致NameNode在啟動加載Edits時會很慢,所以需要對Edits和Fsimage進行合并(所謂合并,就是將Edits和Fsimage加載到內存中,照著Edits中的操作一步步執行,最終形成新的Fsimage)。SecondaryNameNode的作用就是幫助NameNode進行Edits和Fsimage的合并工作。

SecondaryNameNode首先會詢問NameNode是否需要CheckPoint(觸發CheckPoint需要滿足兩個條件中的任意一個,定時時間到和Edits中數據寫滿了)。直接帶回NameNode是否檢查結果。

SecondaryNameNode執行CheckPoint操作,首先會讓NameNode滾動Edits并生成一個空的edits.inprogress,滾動Edits的目的是給Edits打個標記,以后所有新的操作都寫入edits.inprogress,其他未合并的Edits和Fsimage會拷貝到SecondaryNameNode的本地,然后將拷貝的Edits和Fsimage加載到內存中進行合并,生成fsimage.chkpoint,然后將fsimage.chkpoint拷貝給NameNode,重命名為Fsimage后替換掉原來的Fsimage。

NameNode在啟動時就只需要加載之前未合并的Edits和Fsimage即可,因為合并過的Edits中的元數據信息已經被記錄在Fsimage中。

chkpoint檢查時間參數設置

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

配置文件:hdfs-default.xml

<property>  <name>dfs.namenode.checkpoint.period</name>  <value>3600</value></property>

(2)一分鐘檢查一次操作次數,當操作次數達到1百萬時,SecondaryNameNode執行一次。

<property>  <name>dfs.namenode.checkpoint.txns</name>  <value>1000000</value><description>操作動作次數</description></property>
<property>  <name>dfs.namenode.checkpoint.check.period</name>  <value>60</value><description> 1分鐘檢查一次操作次數</description></property>

感謝各位的閱讀,以上就是“Java Hadoop的NameNode和SecondaryNameNode有什么用”的內容了,經過本文的學習后,相信大家對Java Hadoop的NameNode和SecondaryNameNode有什么用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南漳县| 黑龙江省| 安庆市| 大关县| 乌海市| 胶州市| 新津县| 崇左市| 屯昌县| 盘锦市| 右玉县| 金秀| 姜堰市| 中阳县| 台湾省| 丁青县| 儋州市| 鄄城县| 曲阳县| 筠连县| 阿城市| 房产| 沙洋县| 屯门区| 衡阳市| 手机| 锦州市| 宝兴县| 马龙县| 元氏县| 绥芬河市| 中山市| 蕉岭县| 五指山市| 克拉玛依市| 抚州市| 沂源县| 天台县| 巴彦县| 郎溪县| 繁峙县|