從形式上講,元資料可分為記憶體元資料和元資料檔案兩種。其中namenode在記憶體中維護整個檔案系統的元資料映象,用於hdfs的管理;元資料檔案則用於持久化儲存。
從型別上講,元資料有三類重要資訊:
第一類是檔案和目錄自身的屬性資訊,例如檔名、目錄名、父目錄資訊、檔案大小、建立時間、修改時間等。
第二類記錄檔案內容儲存相關資訊,例如檔案塊情況、副本個數、每個副本所在的data node 資訊等。
第三類用來記錄hdfs中所有data node資訊,用於data node管理。
檔案和目錄是檔案系統的基本元素,hdfs將這些元素抽象成inode,每乙個檔案或目錄都對應乙個唯一的inode。它由fsnamesystem的成員變數dir實現對整個hdfs中inode的組織和操作,它是乙個fsdirectory類。
inode資訊完全位於記憶體,因此有效的提高元資料的服務效能,然而一旦掉電將不再存在,故需要將inode資訊儲存到磁碟,這個功能是由fsimage完成的,它是架構在記憶體元資料與磁碟元資料檔案之間的橋梁。
由於所有的元資料位於記憶體,其大小隨檔案系統的規模增大而增大,如果每次都將整個記憶體元資料匯出磁碟,將會帶來很大的系統開銷,所以hdfs在實現時,沒有採用定期匯出元資料的方法,而是採用元資料映象檔案(fsimage)+日誌檔案(edits)的備份機制,其中映象檔案是某一時刻記憶體元資料的真實組織情況,而日誌檔案則記錄了該時刻以後所有的元資料操作 。
block是對於檔案內容組織而言的,按照固定大小,順序對檔案進行劃分並編號,劃分好的每乙個塊就稱之為乙個block,hdfs預設的block大小為64mb。
當乙個客戶端訪問某乙個檔案特定偏移量的內容時,hdfs首先根據路徑資訊找到該檔案對應的inode ,根據偏移計算出block位置,然後找出相應的blockinfo,再找到副本所在data node 的資訊,選擇其中乙個data node進行連線,獲取相應的內容。
磁碟元資料檔案包括以下四個:
fsimage:元資料映象檔案。
edits:日誌檔案。
fstime:儲存最近一次checkpoint的時間。
version:標誌性檔案,最後被建立,它的存在表明前三個元資料檔案的建立成功。
format 主要分為以下幾個步驟:
確定能否格式化;
建立元資料檔案在記憶體中的映象;
對記憶體映象中的資料結構進行初始化;
將記憶體映象寫入元資料備份目錄。
下面我們按照元資料的生命週期順序,列舉元資料所出現的各個應用場景。
場景1hdfs在第一次使用前,需要進行格式化,格式化的結果是:在元資料映象檔案備份路徑的current目錄下,產生元資料檔案:fsimage、fstime、version等;在日誌檔案備份路徑的current目錄下,產生日誌檔案:edits、fstime、version等。
場景2啟動hdfs,hdfs將fsimage和edits檔案內容讀入記憶體,進行合併,填充與inode相關的元資料結構,並將新的元資料記憶體映象匯出,在磁碟上形成新的fsimage和edits檔案。hdfs同時還接收data node的心跳資訊,填充與block和data node相關的元資料結構。
場景3hdfs正常執行,此時如果有元資料更新操作,hdfs會更新對應的記憶體元資料結構,並將該元資料操作日誌記錄寫入磁碟的日誌檔案edits。
場景4如果namenode與secondary namenode、 backup node或checkpoint node配合使用,那麼,一定間隔後會進行checkpoint操作,checkpoint操作會形成當前某一時刻的元資料映象檔案fsimage,以該檔案替換namenode上原有的fsimage,並以最新fsimage對應時刻之後的日誌記錄檔案edits替換namenode上原有的edits。該機制可以有效限制日誌檔案的大小,防止其無限制增長,同時也降低了hdfs啟動時的合併時間。
hdfs元資料儲存
namenode如何儲存元資料 1.nn對元資料的管理分為三部分,記憶體中完整的元資料,磁碟中接近完整的元資料映象檔案 fsimage 記錄元資料操作資訊的edits檔案 2.snn通過配置,定時請求nn,進行checkpoint 3.nn接受到checkpoint請求,會立即滾動正在寫的edits...
HDFS元資料管理
hdfs的目錄結構,包含哪些資料夾子資料夾,以及資料夾下面包含哪些檔案,以及每個檔案的block資訊 id,副本係數,block存放在那個datanode上 元資料存放在 name路徑下。在namenode的記憶體中有乙個樹形結構,存放的就是元資料資訊,對檔案的任何修改都在記憶體中有體現,但是如果機...
hdfs元資料管理
元資料就是檔案的建立時間 大小 許可權 塊列表等資訊。在hadoop集群中namenode的元資料資訊都儲存在了fslmage和eidts檔案中,這兩個檔案的目錄資訊就配置在hdfs site.xml檔案中。fsimage hdfs檔案系統存於硬碟中的元資料檢查點,裡面記錄了自最後一次檢查點之前hd...