元數據冷備份

冷備份的起因:
namenode負責HDFS集群的元數據管理,要保證快速檢索,namenode必須將數據放到內存中,但一旦斷電或者故障,元數據會全部丟失,因此還必須在磁盤上做持久化。HDFS集群做元數據持久化的方式是edits.log+FSImage。edits.log存儲近期的操作,FSImage存儲以前的操作,這樣是為了盡可能地保障namenode的啟動速度。
總而言之,原因為:
- 避免NameNode中的元數據丟失;
- 盡可能保障NameNode的啟動速度。
前言:
NameNode和SecondaryNameNode觸發進行冷備份的條件:
- 時間達到你在配置文件中配置的時間(eg:6h);
- edits.log已經達到的配置文件中配置的指定大小(eg:64M)。
- SecondaryNameNode通過周期性(5min)通過getEditLog獲取editLog的大小,當其達到合並的大小時通過RollEditLog進行合並;
- NameNode停止使用editLog文件,並生成一個新的臨時文件edit.new;
- SecondaryNameNode通過NameNode內建的Http服務器,以get的方法獲取editLog與fsimage文件(get方法中攜帶fsimage與editLog的路徑);
- SecondaryNameNode將fsimage載入內存並逐一執行editlog中的操作;
- 執結束后,會向NameNode發送Http請求,通知NameNode合並結束,NameNode通過Http get方法獲取新的fsimage.chk文件;
- NameNode更新fsimage文件中的記錄檢查點執行的時間,並改名為fsimage文件;
- editLog.new文件改名為edit。
