2-3HDFS原理(Hadoop系列day02)

hdfs架構

這裏寫圖片描述

這裏寫圖片描述

Metadata–>元數據

元數據信息,
內存保留一份,磁盤保留一份
(爲了快速讀取,保存在內存;
爲了防止丟失,序列化到硬盤一份)

元數據存儲細節

這裏寫圖片描述

元數據存儲細節

: 文件名,幾個副本,分成幾塊,每塊存放在哪臺主機上

namenode是啥

這裏寫圖片描述
namenode維護文件路徑樹。

接收客服端請求。

操作datanode

fsimage:元數據鏡像文件(內存中的元數據序列化到磁盤上的文件)

NameNode的工作特點

這裏寫圖片描述

SecondaryNameNode

下載、合併、推送
這裏寫圖片描述

這裏寫代碼片

畫圖總結工作流程

這裏寫圖片描述
client要上傳數據,首先根NameNade打交道。
1.client發送一個請求信息給NameNade:請求查看NameNade的元數據(Metadata)信息。
2.NameNade將信息反饋給client
3.client拿到這些信息,開始往DataNode寫數據。
3.1 與此同時,NameNade操作edits文件。
3.2不管寫成功還是失敗,edits文件都要記錄一條信息。(標示位記錄成功或失敗)
3.3 如果成功了,edits記錄內容爲:文件名稱、存放位置、被分成幾塊。 日誌信息+1 ,edits文件返回,然後修改內存中的Metadata,內存中的Metadata也+1(多了一條信息).————-這個時候fsimage內容沒有+1.(內存中Metadata數據和fsimage數據沒有完全同步)

例子:你在一個月之前向我們的hdfs上傳了兩個文件(原來hdfs沒有文件),接下來一個月沒有做任何操作。
內存中的Metadata應該有幾分信息的描述信息? 答:2條。(內存當中的Metadata是實時更新的)
磁盤上的fsimage應該有幾分信息的描述信息?答:2條。(一個月SecondaryNameNode合併工作都進行好多次了)
edits有幾分信息的描述信息?答:2條不對。(edits與fsimage文件合併之後,edits文件會產生信息,爲了以後記錄新的edits)

一個月之後。我又想上傳一個文件。client發送一個請求信息給NameNade,請求查看NameNade的Metadata;NameNade將信息反饋給client;.client拿到這些信息,開始往DataNode寫數據。假設數據寫成功了。edits存的描述信息加了一條,將結果返回,接着修改Metadata。
這個時候Metadata一共存放了3條描述信息。edits一共存放了1條。 fsimage存放了2條。現在內存中和fsimage中的數據不同步了怎樣才能同步?當滿足一定的條件,SecondaryNameNode要工作了,他把edits和fsimage文件獲取到,進行合併。數據同步了。

合併的時機有幾個? 1.滿足一定的時間,ok.2.當edits達到一定大小。
這裏寫圖片描述

引用塊內容

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章