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>



    本人将持续编写分布式系统设计相关的技术文章和视频,欢迎关注和讨论。


    分享到:


    相關文章: