欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

NameNode?重啟恢復數(shù)據(jù)的流程詳解

 更新時間:2023年02月07日 15:58:30   作者:點滴星光  
這篇文章主要為大家介紹了NameNode?重啟恢復數(shù)據(jù)的流程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

NameNode 重啟恢復數(shù)據(jù)的流程

我們都知道 NameNode 中存儲的是分布式存儲系統(tǒng)的元數(shù)據(jù),在 NameNode 重啟之后,內(nèi)存的數(shù)據(jù)已經(jīng)丟失了的,所以需要重新加載數(shù)據(jù)。

這時候我們采用的方法是 FsImage 快照 + editslog 操作日志兩種結(jié)合的方法;

那它們是怎么結(jié)合的呢?換句話說,這兩種機制是通過什么聯(lián)系起來的呢??

FsImage 和 editslog 的聯(lián)系

在內(nèi)存時的標識

FsImage 是由 editslog 經(jīng)過 checkpoint 機制而得到的,也就是說先有 editslog 再有 FsImage,那么我們來回顧一下 editslog 的組織格式:

message EditLog {
  int64 txId = 1;
  // 操作類型
  int32 opType = 2;
  string path = 3;
  map<string, string> attr = 4;
}

可以看到 editslog 中是有一個 txId 的屬性的,這個屬性是自增的(long 類型,64位取值范圍非常大,理論上不會超出了的);txId 是 editslog 的唯一標識。

txId 是在內(nèi)存中維護著的,每生成一個 editslog 都會將當前 txid 賦值給它,并將 txid + 1;這個在內(nèi)存維護的 txid 是當前系統(tǒng)中最大的 txid 即 max_txid ,在生成 FsImage 會將系統(tǒng)中所有數(shù)據(jù)生成快照,并將當前 max_txid 賦值給它。

我們都知道 FsImage 中有兩個重要的屬性:

public class FsImage {
    ......
    /**
     * 當前最大的txId
     */
    private long maxTxId;
    /**
     * 內(nèi)容
     */
    private INode iNode;
    ......
}

iNode 其實就是元數(shù)據(jù),而 maxTxId 其實就是生成 FsImage 時,系統(tǒng)中的 max_txid。

在磁盤中的標識

上述我們介紹了 FsImage 和 editslog 數(shù)據(jù)在內(nèi)存中的標識,但是這兩樣數(shù)據(jù)都是需要持久化的,那么在持久化之后,怎么標識他們呢?

我們都知道他們的數(shù)據(jù)中包含了 txid ,可是這個數(shù)據(jù)是需要加載進內(nèi)存才能看到的。。。

為了在剛恢復數(shù)據(jù)的時候,也能看到 txid (系統(tǒng)是根據(jù) txid 來聯(lián)系 FsImage 和 editslog, 進行數(shù)據(jù)恢復的),所以在持久化的時候,我們對這兩種文件的命名進行了特殊的組織格式:

fsimage文件的文件名是"fsimage_txid",其中 txid 是文件系統(tǒng)狀態(tài)的事務ID

editslog 文件的文件名是類似 “1_1000.log” 這種格式(editslog 記錄的可能是多條數(shù)據(jù))

恢復元數(shù)據(jù)的流程

  • 根據(jù)指定路徑,找到 FsImage 文件的存放地點
  • 排序,找出 txid 最大的 FsImage (即最新的 FsImage)
  • 解析最新的 FsImage 數(shù)據(jù)進內(nèi)存
  • 找到 editslog,并將其排序,找出 txid 比最新 FsImage 的 txid 還大的所有 editslog 文件
  • 將返回的editslog文件數(shù)據(jù)解析進內(nèi)存

以上就是NameNode 重啟恢復數(shù)據(jù)的流程詳解的詳細內(nèi)容,更多關于NameNode 重啟恢復數(shù)據(jù)的資料請關注腳本之家其它相關文章!

相關文章

  • Spring攔截器之HandlerInterceptor使用方式

    Spring攔截器之HandlerInterceptor使用方式

    這篇文章主要介紹了Spring攔截器之HandlerInterceptor使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Java 解決讀寫本地文件中文亂碼的問題

    Java 解決讀寫本地文件中文亂碼的問題

    這篇文章主要介紹了Java 解決讀寫本地文件中文亂碼的問題的相關資料,需要的朋友可以參考下
    2017-01-01
  • Mybatis 動態(tài)sql的編寫與開啟二級緩存

    Mybatis 動態(tài)sql的編寫與開啟二級緩存

    二級緩存是Mapper級別的緩存,多個SqlSession去操作同一個Mapper中的SQL語句,則這些SqlSession可以共享二級緩存,即二級緩存是跨SqlSession的,這篇文章主要介紹了Mybatis 動態(tài)sql的編寫|開啟二級緩存,需要的朋友可以參考下
    2023-02-02
  • Java 字符串拼接竟然有這么多姿勢(收藏版)

    Java 字符串拼接竟然有這么多姿勢(收藏版)

    這篇文章主要介紹了Java 字符串拼接竟然有這么多姿勢,很值得大家收藏,需要的朋友可以參考下
    2019-11-11
  • SpringBoot在IDEA中實現(xiàn)熱部署的步驟

    SpringBoot在IDEA中實現(xiàn)熱部署的步驟

    這篇文章主要介紹了SpringBoot在IDEA中實現(xiàn)熱部署的步驟,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下
    2020-11-11
  • java中文傳值亂碼問題的解決方法

    java中文傳值亂碼問題的解決方法

    這篇文章主要為大家詳細介紹了java中文傳值亂碼問題的解決方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Java使用wait和notify實現(xiàn)線程之間的通信

    Java使用wait和notify實現(xiàn)線程之間的通信

    Java 線程通信是將多個獨立的線程個體進行關聯(lián)處理,使得線程與線程之間能進行相互通信,下面這篇文章主要給大家介紹了關于Java使用wait和notify實現(xiàn)線程之間通信的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-04-04
  • java二叉樹的遍歷方式詳解

    java二叉樹的遍歷方式詳解

    這篇文章主要為大家詳細介紹了java實現(xiàn)二叉樹遍歷的四種方式,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能給你帶來幫助
    2021-08-08
  • idea在運行期間,實現(xiàn)讓修改的頁面實時生效

    idea在運行期間,實現(xiàn)讓修改的頁面實時生效

    這篇文章主要介紹了idea在運行期間,實現(xiàn)讓修改的頁面實時生效問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • IntelliJ IDEA的數(shù)據(jù)庫管理工具實在太方便了(推薦)

    IntelliJ IDEA的數(shù)據(jù)庫管理工具實在太方便了(推薦)

    這篇文章主要介紹了IntelliJ IDEA的數(shù)據(jù)庫管理工具實在太方便了,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09

最新評論