一、寫操作 二、讀操作 1.請求namenode 因為namenode元數據裡面記錄了DataNode的地址 2.把我們的信息返回給客戶端 3.客戶端收到信息之後 就到相應客戶端去請求數據即可 4.重點是請求那個DataNode上的哪個塊信息,因為namenode上存放的是塊編號 三、元數據 元數據 ...
一、寫操作
二、讀操作
1.請求namenode 因為namenode元數據裡面記錄了DataNode的地址
2.把我們的信息返回給客戶端
3.客戶端收到信息之後 就到相應客戶端去請求數據即可
4.重點是請求那個DataNode上的哪個塊信息,因為namenode上存放的是塊編號
三、元數據
元數據保存在記憶體中,fsimage是元數據文件的存放方式,fsimage中的內容是各個文件的塊信息
namenode中fsimage信息會每隔半小時更新一次,新文件與舊文件合併不斷更新,在關閉時也會更新一次,開啟時namenode會吧fsimage的數據載入到記憶體
四、namenode和SecondaryNameNode CheckPoint原理
在無Secondarynamenode時namenode要處理大量的客戶端的請求還要每半小時把記憶體的數據同步到fsimage一次,為了減小namenode工作負擔,設計出secondarynamenode。
secondarynamenode是對namenode的一個備份,它會下載namenode上的日誌信息,根據日誌生成fsimage實現對namenode的備份,把fsimage傳給namenode,這時同步的任務交給secondarynamenode,namenode無需自己每半小時同步到fsimage。
不開啟secondarynamenode的情況下,如果namenode掛掉就無法恢復。
1.secondary namenode請求主Namenode停止使用edits文件,暫時將新的寫操作記錄到一個新文件中,如edits.new。
2.secondary namenode節點從主Namenode節點獲取fsimage和edits文件(採用HTTP GET)
3.secondary namenode將fsimage文件載入到記憶體,逐一執行edits文件中的操作,創建新的fsimage文件
4.secondary namenode將新的fsimage文件發送回主Namenode(使用HTTP POST)
5.主Namenode節點將從secondary namenode節點接收的fsimage文件替換舊的fsimage文件,用步驟1產生的edits.new文件替換舊的edits文件(即改名)。同時更新fstime文件來記錄檢查點執行的時間
註:從Hadoop0.21.0開始,輔助Namenode已經放棄不用,由checkpoint節點取而代之,功能不變。新版本同時引入一種新的Namenode,名為BackupNode