HDFS Datanode裡的元數據

之前我寫了一篇《 》,本文將解釋一下這個集群下Datanode節點裡的元數據。還有一篇講《 》。

通過下面的命令進入到datanode的容器裡:

<code>$ docker exec -it datanode bash
/<code>

hadoop/dfs/data 目錄

<code>root@9ce45018485c:/# cd hadoop/dfs/data/
root@9ce45018485c:/hadoop/dfs/data# ls -al
total 16
drwx------ 3 root root 4096 Mar 22 07:34 .
drwxr-xr-x 3 root root 4096 Mar 22 07:34 ..
drwxr-xr-x 3 root root 4096 Mar 22 07:34 current
-rw-r--r-- 1 root root 16 Mar 22 07:46 in_use.lock/<code>

in_use.lock

in_use.lock – 這是DataNode進程持有的鎖文件,用於防止多個DataNode進程啟動並同時修改這個目錄。

current 目錄

<code>root@9ce45018485c:/hadoop/dfs/data# cd current/
root@9ce45018485c:/hadoop/dfs/data/current# ls -al
total 16
drwxr-xr-x 3 root root 4096 Mar 22 07:34 .
drwx------ 3 root root 4096 Mar 22 07:34 ..
drwx------ 4 root root 4096 Mar 22 07:46 BP-689076896-172.20.0.2-1584862486341
-rw-r--r-- 1 root root 229 Mar 22 07:46 VERSION/<code>

VERSION

<code>root@9ce45018485c:/hadoop/dfs/data/current# cat VERSION
#Sun Mar 22 07:46:06 UTC 2020
storageID=DS-63375720-3a34-43ff-9d4a-0854620eb751
clusterID=CID-566c43dd-60f2-41e0-8aa7-25e00a93eec0
cTime=0
datanodeUuid=83e2d89b-8df4-419f-b821-ba2a3793e839
storageType=DATA_NODE
layoutVersion=-57/<code>

與NameNode非常相似,這是一個文本文件,包含多個屬性,例如layoutVersion,clusterId和cTime,所有這些都已在《 》解釋過。

block pool 子目錄

<code>root@9ce45018485c:/hadoop/dfs/data/current/BP-689076896-172.20.0.2-1584862486341# ls -al
total 20
drwx------ 4 root root 4096 Mar 22 07:46 .
drwxr-xr-x 3 root root 4096 Mar 22 07:34 ..
drwxr-xr-x 4 root root 4096 Mar 22 07:34 current
-rw-r--r-- 1 root root 166 Mar 22 07:34 scanner.cursor
drwxr-xr-x 2 root root 4096 Mar 22 07:46 tmp/<code>

block pool current 目錄

<code>root@9ce45018485c:/hadoop/dfs/data/current/BP-689076896-172.20.0.2-1584862486341/current# ls -al
total 20
drwxr-xr-x 4 root root 4096 Mar 22 07:34 .
drwx------ 4 root root 4096 Mar 22 07:46 ..
-rw-r--r-- 1 root root 140 Mar 22 07:46 VERSION
drwxr-xr-x 3 root root 4096 Mar 22 07:38 finalized
drwxr-xr-x 2 root root 4096 Mar 23 07:46 rbw/<code>

VERSION

<code>root@9ce45018485c:/hadoop/dfs/data/current/BP-689076896-172.20.0.2-1584862486341/current# cat VERSION
#Sun Mar 22 07:46:06 UTC 2020
namespaceID=893392144
cTime=1584862486341
blockpoolID=BP-689076896-172.20.0.2-1584862486341
layoutVersion=-57/<code>

除了前面VERSION已經討論的屬性之外,DataNode的VERSION文件還包含:

  • storageType – 在這種情況下,storageType字段設置為DATA_NODE。
  • blockpoolID – 這也是這個block pool目錄的名稱.
  • finalized/rbw - finalized和rbw都包含用於塊存儲的目錄結構。它包含許多塊文件,這些文件包含HDFS文件數據和相應的.meta文件,其中包含校驗checksum信息。“
    rbw”代表“replica being written”(“正在寫入副本”)。該目錄包含正在由HDFS客戶端寫入的塊。finalized目錄包含客戶端不再寫入的且已完成的塊。
  • finalized 目錄

    <code>root@9ce45018485c:/hadoop/dfs/data/current/BP-689076896-172.20.0.2-1584862486341/current/finalized/subdir0/subdir0# ls
    blk_1073741825\t\t blk_1073741829\t blk_1073741834\t blk_1073741837\t\tblk_1073741840\t\t blk_1073741843
    blk_1073741825_1001.meta blk_1073741829_1005.meta blk_1073741834_1010.meta blk_1073741837_1013.meta\tblk_1073741840_1016.meta blk_1073741843_1019.meta
    blk_1073741827\t\t blk_1073741831\t blk_1073741835\t blk_1073741838\t\tblk_1073741841
    blk_1073741827_1003.meta blk_1073741831_1007.meta blk_1073741835_1011.meta blk_1073741838_1014.meta\tblk_1073741841_1017.meta
    blk_1073741828\t\t blk_1073741832\t blk_1073741836\t blk_1073741839\t\tblk_1073741842
    blk_1073741828_1004.meta blk_1073741832_1008.meta blk_1073741836_1012.meta blk_1073741839_1015.meta\tblk_1073741842_1018.meta/<code>



    本人將持續編寫分佈式系統設計相關的技術文章和視頻,歡迎關注和討論。


    分享到:


    相關文章: