💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
**1. 概念** namenode 被格式化之后,将在{hadoop_home}/data/tmp/dfs/name/current 目录中产生如下文件: ```xml edits_0000000000000000000 fsimage_0000000000000000000.md5 seen_txid VERSION ``` Fsimage 文件:HDFS 文件系统元数据的一个永久性的检查点,其中包含 HDFS文件系统的所有目录和文件 idnode 的序列化信息。 <br/> Edits 文件:存放 HDFS 文件系统的所有更新操作的路径,文件系统客户端执行的所有写操作首先会被记录到 edits 文件中。 <br/> seen_txid 文件:保存的是一个数字,就是最后一个 edits_的数字。<br /> 每次 NameNode <mark>启动的时候</mark>都会将 fsimage 文件读入内存,并从 00001 开始到 seen_txid 中记录的数字依次执行每个 edits 里面的更新操作,保证内存中的元数据信息是最新的、同步的,可以看成 NameNode 启动的时候就将 fsimage 和edits 文件进行了合并。 <br /> hdfs提供了`oiv`和`oev`命令来查看fsimage和edits文件。 <br /> **2. 使用 oiv 查看 fsimage 文件** (1)查看 oiv 和 oev 命令 ```sql [root@hadoop101 current]$ hdfs oiv apply the offline fsimage viewer to an fsimage oev apply the offline edits viewer to an edits file ``` (2)基本语法 ```sql hdfs oiv -p 文件类型 -i 镜像文件 -o 转换后文件输出路径 ``` (3)案例实操 ```sql [root@hadoop101 current]$ pwd /opt/install/hadoop/data/tmp/dfs/name/current [root@hadoop101 current]$ hdfs oiv -p XML -i \ fsimage_0000000000000000025 \ -o /opt/install/hadoop/fsimage.xml [root@hadoop101 current]$ cat /opt/install/hadoop/fsimage.xml ``` 将显示的 xml 文件内容拷贝到 idea 中创建的 xml 文件,并格式化。部分显示结果如下。注意:id,name 等属性与自己环境一致. ```xml <inode> <id>15387</id> <type>DIRECTORY</type> <name>user</name> <mtime>1512722284477</mtime> <permission>kgc:supergroup:rwxr-xr-x</permission> <nsquota>-1</nsquota> <dsquota>-1</dsquota> </inode> ...... ``` <br/> **3. oev 查看 edits 文件** (1)基本语法 ```sql hdfs oev -p 文件类型 -i 编辑日志 -o 转换后文件输出路径 ``` (2)案例实操 ```sql [root@hadoop101 current]$ hdfs oev -p XML -i \ edits_0000000000000000012-0000000000000000013 \ -o /opt/install/hadoop/edits.xml [root@hadoop101 current]$ cat /opt/install/hadoop/edits.xml ``` 将显示的 xml 文件内容拷贝到 idea 中创建的 xml 文件中,并格式化。显示结果如下。 ```xml <?xml version="1.0" encoding="UTF-8"?> <EDITS> <EDITS_VERSION>-63</EDITS_VERSION> <RECORD> <OPCODE>OP_START_LOG_SEGMENT</OPCODE> <DATA> <TXID>129</TXID> </DATA> </RECORD> ...... ```