HDFS元數據管理實戰篇

           HDFS元數據管理實戰篇
node

                                   做者:尹正傑ide

版權聲明:原創做品,謝絕轉載!不然將追究法律責任。工具

 

 

 

一.HDFS元數據概述oop

1>.什麼是HDFS元數據fetch

  NameNode的主要工做是存儲HDFS命名空間,HDFS元數據(或HDFS命名空間)是由inode(其存儲屬性,如權限,修改,訪問時間和磁盤空間配額)表示的文件和目錄的層次結構。命名空間還包括文件到塊ID的映射關係。

  NameNode存儲HDFS元數據,而DataNode存儲實際的HDFS數據。當客戶端鏈接到Hadoop讀取和寫入數據時,它們首先鏈接到NameNode,從而直到實際數據塊存儲在哪裏或往哪一個DataNode寫入其數據。。

  HDFS元數據包括如下信息:
    (1)HDFS文件位置(持久化);
    (2)HDFS文件的全部權和權限(持久化);
    (3)HDFS數據塊的名稱(持久化);
    (4)HDFS數據塊的位置(爲持久化,僅在內存中存儲,該信息由集羣的全部DataNodes節點彙報而來);

  舒適提示:
    除了上面的第4條,元數據文件fsimage包括以上列出的全部元數據。

2>.檢查點優化

  NameNode維護命名空間樹,以及將數據塊映射到集羣中的DataNode。inode和塊列表一塊兒定義命名空間的元數據,稱爲映像(fsimage)。

  NameNode將整個映像存儲在其內存中,並在NameNode文件系統上存儲該映像的記錄。命名空間的這個持久記錄稱爲檢查點。

  NameNode將對HDFS文件系統的更改寫入日誌,命名爲編輯日誌。很重要的一點是,僅當NameNode啓動,用戶請求或者輔助節點或Standby NameNode建立新的檢查點時纔會改變檢查點,不然NameNode在運行時不會改變它的檢查點。

  當NameNode啓動時,它會從磁盤上的檢查點初始化命名空間映像,並重播日誌中的全部更改。在開始爲客戶端提供服務以前,他會建立一個新的檢查點(fsimage文件)和一個空編輯日誌文件。

  舒適提示:
    fsimage文件包含存儲在DataNode上的數據塊和HDFS文件之間的映射信息。若是這個文件丟失或損壞,則存儲在DataNode上的HDFS數據沒法被訪問,好像全部的數據已經消失了!

3>.fsimage和編輯日誌spa

  當客戶端將數據寫入HDFS時,寫操做會更改HDFS元數據,固然,這些更改將由NameNode記錄到編輯日誌中。同時,NameNode還將更新其元數據的內存。

  每一個客戶端事務由NameNode記錄在預寫日誌中,NameNode在向客戶端發送確認以前刷新並同步編輯日誌。

  NameNode處理來自集羣中多個客戶端的請求,所以爲了優化將這些事務保存到磁盤的過程,它批處理多個客戶端事務。

 

二.下載最新的fsimage文件日誌

1>.fsimage和編輯日誌的存儲位置code

  fsimage和編輯日誌時與HDFS元數據相關聯的兩個關鍵結構。NameNode將這了兩個結構存儲在由hdfs-site.xml文件中的配置參數"dfs.namenode.name.dir"(映像文件)和"dfs.namenode.edits.dir"(編輯文件)指定的存儲路徑。

  以下圖所示,是咱們上面提到的兩個參數指定的目錄內容。

  舒適提示:
    Secondary NameNode(或Standby NameNode)具備相同的文件結構。
    另外須要注意的是,編輯日誌由多個編輯段組成的,每一個段都是以"edits_*"開頭的文件;fsimage文件固然以"fsimage_*"開頭。

2>.下載最新的映像(fsimage)文件xml

[root@hadoop105.yinzhengjie.com ~]# hdfs dfsadmin -help fetchImage 
-fetchImage <local directory>:
    Downloads the most recent fsimage from the Name Node and saves it in    the specified local directory.

[root@hadoop105.yinzhengjie.com ~]# 
[root@hadoop105.yinzhengjie.com ~]# hdfs dfsadmin -help fetchImage
[root@hadoop105.yinzhengjie.com ~]# ll
total 0
[root@hadoop105.yinzhengjie.com ~]# 
[root@hadoop105.yinzhengjie.com ~]# hdfs dfsadmin -fetchImage ./          #下載最新的映像文件到當前目錄
20/09/02 00:54:34 INFO namenode.TransferFsImage: Opening connection to http://hadoop101.yinzhengjie.com:50070/imagetransfer?getimage=1&txid=latest
20/09/02 00:54:34 INFO common.Util: Combined time for fsimage download and fsync to all disks took 0.00s. The fsimage download took 0.00s at 3000.00 KB/s. Synchronous (fsync) write to disk of /root/./fsimage_0000000000000004419 took 0.00s.
[root@hadoop105.yinzhengjie.com ~]# 
[root@hadoop105.yinzhengjie.com ~]# 
[root@hadoop105.yinzhengjie.com ~]# ll
total 4
-rw-r--r-- 1 root root 3731 Sep  2 00:54 fsimage_0000000000000004419
[root@hadoop105.yinzhengjie.com ~]# 
[root@hadoop105.yinzhengjie.com ~]# hdfs dfsadmin -fetchImage ./          #下載最新的映像文件到當前目錄

3>.舒適提示

  NameNode僅存儲文件系統元數據,例如磁盤上fsimage文件中的文件,塊,目錄和權限信息,它將實際塊位置信息保留在內存中。

  當客戶端讀取數據時,NmaeNode會高速客戶端文件塊所在位置。在這一點上,客戶端不須要進一步與NameNode進行關於數據自己傳送的通訊。

  因爲NameNode元數據具備的關鍵性質,所以應配置多個目錄做爲dfs.namenode.name.dir配置參數的值。在理想狀況下,推薦使用NFS設備掛載點,這樣作的目的是能夠保證數據的冗餘性。

 

三.離線映像查看器

 

1>.如何查看映像文件的內容呢?

  下載映像文件後, 如何查看其內容呢?以下圖所示,下載的映像文件其是一個二進制文件,咱們不能使用文本工具去查看相應的內容(若是您強行這樣作,根本得不到該文件存儲的正確信息,以下圖所示)。

  能夠使用離線映像查看器(oiv)查看fsimage文件的內容,從而瞭解集羣的命名空間。此工具將fsimage文件的內容轉換爲人類可讀的格式,並容許經過只讀WebHDFS API檢查HDFS的命名空間。

  生產環境中fsimage文件通常都至關大(若是您的集羣數據量在剛剛達到PB級別,那麼映像文件一般都能達到GB的容量),OIV能夠幫助您快速處理文件的內容。正如其名,它能夠離線幫我們查看映像文件。

  舒適提示:
    上面咱們提到了如何下載映像文件,細心的小夥伴估計已經發現了,若是你能夠直接登陸到NameNode節點,壓根就無需下載映像文件。只要到對應的存儲目錄拷貝一份便可,千萬別試圖去修改它!(若是你之意要這樣作,修改前最好作好備份喲~)
 

 

2>.

 

3>.

相關文章
相關標籤/搜索