<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
我們都知道為了優化分散式儲存系統中 NameNode 的重啟效能,我們引進了 checkpoint 機制和 FsImage 快照,使得 FsImage 和 editslog 共同為系統後設資料提供持久化功能。
那麼我們今天就來學習一下,checkpoint 機制具體應該要怎麼實現??
NameNode 的主要工作時維護系統中檔案後設資料,並實現其持久化;在每執行一個操作之後,NameNode 都要生成一個 editslog,最後刷盤(但是不是每生成一條資料就刷盤一次)。
從這我們可以發現,NameNode 程序,它需要額外分配出來一個執行緒,後臺執行緒定時的去進行磁碟IO的操作,其實這個是很影響本地 CPU 負載的;另外,假設這時候來了很多操作請求,那麼系統中將有大量的執行緒用來來更新記憶體的檔案目錄樹,這時候肯定是要加鎖的了。此時如果系統還要每隔一段時間,耗費比如說幾秒鐘,甚至幾分鐘的時間來對檔案目錄樹進行加鎖,讀取資料,寫入本地磁碟;這樣就會導致更新檔案目錄樹,和讀取檔案目錄樹寫入磁碟,它們之間會產生巨大的鎖的衝突。
如果上述所有操作都在 NameNode 上執行的話,就太影響 NameNode 節點的效能了。
為此,我們需要考慮給系統中增加一個角色——BackNode,其實它的功能就有點像 HDFS 中的 SecondaryNameNode。
BackNode 是充當於 NameNode 的一個冷備份的角色,我們可以將 checkpoint 的操作交給其來執行,這樣就可以減輕 NameNode 這邊的效能消耗了。
BackNode 在啟動的時候會啟動一個 checkpoint 的排程任務:
// 排程任務:fsImageCheckpointer defaultScheduler.schedule("FSImage Checkpoint操作", fsImageCheckpointer, backupnodeConfig.getCheckpointInterval(), backupnodeConfig.getCheckpointInterval(), TimeUnit.MILLISECONDS);
這是一個定時任務,每隔一段時間就會被執行一次。
下面我們一起來看看 checkpoint 任務具體需要做些什麼?
具體程式碼如下:
/** * checkpoint 任務 */ @Override public void run() { log.info("BackupNode啟動checkpoint後臺執行緒."); try { // 如果是正在恢復後設資料,則直接返回 if (nameSystem.isRecovering()) { log.info("正在恢復後設資料..."); return; } // 當前 maxid 和 之前記錄的 maxid 相等 if (nameSystem.getMaxTxId() == lastCheckpointTxId) { log.info("EditLog和上次沒有變化,不進行checkpoint: [txId={}]", lastCheckpointTxId); return; } // 以下討論的情況是:當前 maxid 和 之前記錄的 maxid 不相等(大於) // 對當前記憶體中的資料生成快照 FsImage fsImage = nameSystem.getFsImage(); // 更新記錄中的 maxid lastCheckpointTxId = fsImage.getMaxTxId(); // 路徑 String fsImageFile = backupNodeConfig.getFsImageFile(String.valueOf(System.currentTimeMillis())); log.info("開始執行checkpoint操作: [maxTxId={}]", fsImage.getMaxTxId()); // 寫入FsImage檔案 doCheckpoint(fsImage, fsImageFile); // 上傳 FsImage 給 NameNode uploadFsImage(fsImageFile); // 刪除舊的FSImage namenodeClient.getDefaultScheduler().scheduleOnce("刪除FSImage任務", fsImageClearTask, 0); } catch (Exception e) { log.error("FSImageCheckPointer error:", e); } }
以上就是checkpoint 機制具體實現範例詳解的詳細內容,更多關於checkpoint 機制實現的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45