Hadoop NameNode的image和edits里面到底存放了些啥

NameNode

hdfs namenode -format

格式化后会在hadoop.tmp.dir目录产生fsiamge文件

[zhangsan@node1 ~]$ cd /opt/bigdata/hadoop/default/dfs/name/current[zhangsan@node1 current]$ ll-rw-rw-r--. 1 zhangsan zhangsan 355 Apr  4 08:52 fsimage_0000000000000000000-rw-rw-r--. 1 zhangsan zhangsan  62 Apr  4 08:52 fsimage_0000000000000000000.md5-rw-rw-r--. 1 zhangsan zhangsan   2 Apr  4 08:52 seen_txid-rw-rw-r--. 1 zhangsan zhangsan 207 Apr  4 08:52 VERSION

接下来我们使用工具查看每个文件的内容。

fsimage

Offline Image Viewer(oiv)是一个可以将hdfs的fsimage文件的内容转储为人类可读的格式的工具。支持多种Processor解析方式:Web processor, XML Processor, Delimited Processor, FileDistribution Processor等。

使用方法

bin/hdfs oiv -p XML -i fsimage -o fsimage.xml

  • -p|--processor processor
  • -i|--inputFile input file
  • -o|--outputFile output file
  • -h | --help

使用案例

XML Processor

[zhangsan@node1 current]$ hdfs oiv -i fsimage_0000000000000000000 -p XML -o ~/fsimage_0000000000000000000.xml

fsimage_0000000000000000000.xml文件内容:

[zhangsan@node1 current]$ cat ~/fsimage_0000000000000000000.xml <?xml version="1.0"?>            1000        1000        0        1073741824        0                16385                    16385            DIRECTORY                        0            zhangsan:supergroup:rwxr-xr-x            9223372036854775807            -1                            0                                    16385                        0        0                1    

FileDistribution Processor

[zhangsan@node1 current]$ hdfs oiv -i fsimage_0000000000000000000 -p FileDistribution -o ~/fsimage_0000000000000000000.fd
[zhangsan@node1 current]$ cat ~/fsimage_0000000000000000000.fd Processed 0 inodes.Size    NumFilestotalFiles = 0totalDirectories = 1totalBlocks = 0totalSpace = 0maxFileSize = 0

Delimited Processor

[zhangsan@node1 current]$ hdfs oiv -i fsimage_0000000000000000000 -p Delimited -o ~/fsimage_0000000000000000000.delimited
[zhangsan@node1 current]$ cat ~/fsimage_0000000000000000000.delimited /   0   1970-01-01 08:00    1970-01-01 08:00    0   0   0   9223372036854775807 -1  rwxr-xr-x   zhangsan    supergroup

VERSION

[zhangsan@node1 current]$ cat VERSION#Mon Apr 04 08:52:15 CST 2022namespaceID=1551467440clusterID=CID-18aaceee-980c-475a-8d3d-d59b7291541acTime=0storageType=NAME_NODEblockpoolID=BP-792177474-192.168.179.101-1649033535606layoutVersion=-63

seen_txid

[zhangsan@node1 current]$ cat seen_txid 0

edits

edits文件中记录了HDFS的操作日志,现在HDFS中没有任何文件,我们创建文件夹/user/zhangsan,在创建文件前,先启动HDFS。

Offline Edits Viewer(oev)是一个用来解析Edits日志文件的工具。支持多种Processor解析方式:XML, stats等。

使用方法

bin/hdfs oev -p xml -i edits -o edits.xml

使用案例

创建文件夹/user/zhangsan

[zhangsan@node1 current]$ hdfs oev -i edits_inprogress_0000000000000000001 -p XML -o ~/edits_inprogress_0000000000000000001.xml

查看edits

[zhangsan@node1 current]$ cat ~/edits_inprogress_0000000000000000001.xml <?xml version="1.0" encoding="UTF-8"?>  -63      OP_START_LOG_SEGMENT          1            OP_MKDIR          2      0      16386      /user      1649034484846              zhangsan        supergroup        493                  OP_MKDIR          3      0      16387      /user/zhangsan      1649034484856              zhangsan        supergroup        493            

上传文件hadoop-2.7.3.tar.gz到hdfs://node1:9000/user/hadoop/

[zhangsan@node1 current]$ hdfs dfs -put /opt/bigdata/hadoop/hadoop-2.7.3.tar.gz /user/zhangsan

再次查看edits

<?xml version="1.0" encoding="UTF-8"?>  -63      OP_START_LOG_SEGMENT          1            OP_MKDIR          2      0      16386      /user      1649034484846              zhangsan        supergroup        493                  OP_MKDIR          3      0      16387      /user/zhangsan      1649034484856              zhangsan        supergroup        493                  OP_ADD          4      0      16388      /user/zhangsan/hadoop-2.7.3.tar.gz._COPYING_      3      1649035096135      1649035096135      134217728      DFSClient_NONMAPREDUCE_-297911069_1      192.168.179.101      true              zhangsan        supergroup        420            c2ab8d7c-26da-42c8-a479-121dc16a21aa      3            OP_ALLOCATE_BLOCK_ID          5      1073741825            OP_SET_GENSTAMP_V2          6      1001            OP_ADD_BLOCK          7      /user/zhangsan/hadoop-2.7.3.tar.gz._COPYING_              1073741825        0        1001                  -2            OP_ALLOCATE_BLOCK_ID          8      1073741826            OP_SET_GENSTAMP_V2          9      1002            OP_ADD_BLOCK          10      /user/zhangsan/hadoop-2.7.3.tar.gz._COPYING_              1073741825        134217728        1001                    1073741826        0        1002                  -2            OP_CLOSE          11      0      0      /user/zhangsan/hadoop-2.7.3.tar.gz._COPYING_      3      1649035103318      1649035096135      134217728                  false              1073741825        134217728        1001                    1073741826        79874467        1002                    zhangsan        supergroup        420                  OP_RENAME_OLD          12      0      /user/zhangsan/hadoop-2.7.3.tar.gz._COPYING_      /user/zhangsan/hadoop-2.7.3.tar.gz      1649035103337      c2ab8d7c-26da-42c8-a479-121dc16a21aa      9      

CheckPointing

检查点是一个获取 fsimage和edit log并将它们压缩成新 fsimage 的过程。这样,NameNode可以直接从 fsimage加载最终状态到内存中,而不是重加载大量的的edit log。这是一种效率更高的操作,并减少了 NameNode 的启动时间。

创建新的 fsimage 是一项 I/O 和 CPU 密集型操作,有时需要几分钟才能执行。在检查点期间,NameNode还需要限制其他用户的并发访问。因此,HDFS 不是暂停活动的 NameNode 来执行检查点,而是将其推迟到 SecondaryNameNode 或备用 NameNode,具体取决于是否配置了 NameNode 高可用性(HA)。检查点的机制根据是否配置了 NameNode 高可用性而有所不同。

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章