NameNode之資料塊管理

2021-08-11 03:37:11 字數 2126 閱讀 4348

一 block、replica、blocksmap

hdfs使用block類抽象namenode中的資料塊,block實現了writable介面,是可以序列化的,並且實現了comparable介面,可以按照blockid大小排序。

定義了三個字段:

blockid:唯一識別符號

numbytes:資料塊大小

generationstamp:這個資料塊的時間戳

blockinfo類擴充套件自block,是block的補充說明,定義了該資料塊屬於哪乙個hdfs檔案,定義了triplets儲存這個block副本儲存在哪些資料節點上。

blocksmap: 管理著namenode上資料塊的元資料,包括當前資料塊屬於哪乙個hdfs檔案,以及當前資料塊儲存在哪些datanode上。

當datanode啟動時,會對datanode的本地磁碟進行掃瞄,並將當前datanode上儲存的資料塊資訊匯報到namenode.namenode收到datanode的匯報,會建立資料塊與儲存這個資料塊的datanode的對應關係,並將這個資訊儲存到blocksmap中。

通過gset物件維護著block->blockinfo的對映關係,gset是hadoop自己實現的乙個比較的特殊的集合型別,特殊點在於他是乙個集合,但是卻提供了類似對映的功能。

replica:我們將namenode的資料塊資訊叫做資料塊,將datanode上的資料塊叫做副本。

replica的狀態:

finalized:datanode上的副本已完成操作,不再修改。使用finalizedreplica描述

rbw:剛剛被建立或者追加寫的副本,正在被寫入,且已經寫入的副本的內容還是可讀的,使用replicabeingwritten描述

rur:租約過期之後發生租約恢復和資料塊恢復時副本所處的狀態。rur狀態的副本使用replicaunderrecovery類描述。

rwr:如果乙個datanode掛掉並重啟後,所有rbw狀態的副本都將轉換rwr狀態。rwr狀態的副本不會出現在資料流管道中。

temporary:datanode之間傳輸副本時,正在傳輸的副本就是臨時狀態。

block類狀態

namenode中資料塊有四種狀態:

complete:資料塊的長度和時間戳不再變化,並且namenode至少收到乙個datanode報告有finalized狀態的副本

under_construction:檔案被建立或者進行追加寫操作的時候,正在被寫入的資料塊就處於正在構建狀態,長度和時間戳都是可變的

under_recovery:如果乙個檔案的最後乙個

commited:客戶端在寫檔案時的時候,每次請求新的資料塊,或者關閉檔案時候,都會順帶對上乙個資料塊進行提交。上乙個資料塊

under_construction轉化成commited狀態

二 資料塊副本狀態

blockmanager管理和維護著所有與資料塊相關的操作,會將不同狀態的資料塊副本放到不同的資料塊副本集合。

損壞的資料塊副本集合:corruptreplicamap

客戶端發現損壞的資料塊時,會通過clientprotocal.reportbadblocks向namenode匯報損壞的資料塊副本;客戶端會通過datanodeprotocal.

reportbadblocks方法匯報損壞的資料塊副本。之後blockmanager會將損壞的副本加入到corruptreplicamap,儲存了損壞的資料塊副本與儲存這個副本的datanode的對應關係(block->datanode)

等待刪除的資料塊副本集合:invalidateblocks

invalidateblocks的資料塊副本來自於損壞的資料塊副本和多餘的資料塊副本這兩個集合。blockmanager的replicationmonitor執行緒會定期執行刪除操作,每一次刪除的時候,replicationmonitor執行緒都會從

invalidateblocks中選出nodetoprocess個datanode進行刪除操作,然後再從每乙個datanode上選出dfs.block.invalidate.limit個副本刪除,預設1000.

推遲操作的資料塊副本集合:postponedmisreplicatedblocks

多於的資料塊副本集合:excessreplicamap

等待複製的資料塊副本集合:neededreplications

HDFS之namenode管理元資料機制及一些問題

namenode對資料的管理採用了三種儲存形式 記憶體元資料 namesystem 磁碟元資料映象檔案 資料操作日誌檔案 可通過日誌運算出元資料 元素據儲存機制 1 記憶體中有乙份完整的元資料 記憶體meta data 2 磁碟有乙個 準完整 的元資料映象 fsimage 檔案 在namenode的...

NameNode資料管理機制

namenode是整個檔案系統的管理節點。它維護著整個檔案系統的檔案目錄樹,檔案 目錄的元資訊和每個檔案對應的資料塊列表。接收使用者的操作請求 檔案包括 fsimage 元資料映象檔案。儲存某一時段namenode記憶體元資料資訊。edits 操作日誌檔案。fstime 儲存最近一次checkpoi...

NameNode元資料管理機制

1.使用者上傳檔案的的過程 解析 使用者向nn申請上傳檔案 nn將分配的dn資訊記錄追加在edit.log的檔案中 nn將分配的dn資訊返回給客戶端 客戶端將檔案上傳到各個節點上 客戶端將上傳成功的資訊返回給nn節點,nn將edit.log檔案中的內容寫入記憶體中,一次上傳檔案的操作完成了 當edi...