60-Hadoop-FsImage-Edit.md:
镜像文件和编辑日志简介
NameNode被格式化之后,将在/opt/module/hadoop-3.1.4/data/tmp/dfs/name/current目录中产生如下文件
(1)Fsimage文件:HDFS文件系统元数据的一个永久性的检查点,其中包含HDFS文件系统的所有目
录和文件inode的序列化信息。
(2)Edits文件:存放HDFS文件系统的所有更新操作的路径,文件系统客户端执行的所有写操作首先
会被记录到Edits文件中。
(3)seen_txid文件保存的是一个数字,就是最后一个edits_的数字
(4)每 次NameNode启动的时候都会将Fsimage文件读入内存,加 载Edits里面的更新操作,保证内存
中的元数据信息是最新的、同步的,可以看成NameNode启动的时候就将Fsimage和Edits文件进行了合并。
1)oiv查看Fsimage文件
(1)查看 oiv 和 oev 命令
(2)基本语法
hdfs oiv -p 文件类型 -i 镜像文件 -o 转换后文件输出路径
(3)案例实操
[root@hadoop102 current]# hdfs oiv -p XML -i fsimage_0000000000000002477 -o ./fsimage.xml
cat或者下载查看内容
目录名称
2)oev查看Edits文件,文件的追加的操作。
(1)基本语法
hdfs oev -p 文件类型 -i 编辑日志 -o 转换后文件输出路径
(2)案例实操
首先上传一个文件进行测试
[root@hadoop102 current]# hdfs oev -p XML -i edits_inprogress_0000000000000002481 -o ./edits.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<EDITS>
<EDITS_VERSION>-64</EDITS_VERSION>
<RECORD>
<OPCODE>OP_START_LOG_SEGMENT</OPCODE>
<DATA>
<TXID>2481</TXID>
</DATA>
</RECORD>
<RECORD>
<OPCODE>OP_ADD</OPCODE>//追加
<DATA>
<TXID>2482</TXID>
<LENGTH>0</LENGTH>
<INODEID>16915</INODEID>
<PATH>/tmp/shuguo修改名字后的.txt._COPYING_</PATH>
<REPLICATION>3</REPLICATION>
<MTIME>1623595663210</MTIME>
<ATIME>1623595663210</ATIME>
<BLOCKSIZE>134217728</BLOCKSIZE>
<CLIENT_NAME>DFSClient_NONMAPREDUCE_-1915510286_1</CLIENT_NAME>
<CLIENT_MACHINE>192.168.1.102</CLIENT_MACHINE>
<OVERWRITE>true</OVERWRITE>
<PERMISSION_STATUS>
<USERNAME>root</USERNAME>
<GROUPNAME>supergroup</GROUPNAME>
<MODE>420</MODE>
</PERMISSION_STATUS>
<ERASURE_CODING_POLICY_ID>0</ERASURE_CODING_POLICY_ID>
<RPC_CLIENTID>06419ca9-9766-40dd-adaa-cf02c0216f98</RPC_CLIENTID>
<RPC_CALLID>3</RPC_CALLID>
</DATA>
</RECORD>
<RECORD>
<OPCODE>OP_ALLOCATE_BLOCK_ID</OPCODE>
<DATA>
<TXID>2483</TXID>
<BLOCK_ID>1073742038</BLOCK_ID>
</DATA>
</RECORD>
<RECORD>
<OPCODE>OP_SET_GENSTAMP_V2</OPCODE>
<DATA>
<TXID>2484</TXID>
<GENSTAMPV2>1233</GENSTAMPV2>
</DATA>
</RECORD>
<RECORD>
<OPCODE>OP_ADD_BLOCK</OPCODE>//添加块信息
<DATA>
<TXID>2485</TXID>
<PATH>/tmp/shuguo修改名字后的.txt._COPYING_</PATH>
<BLOCK>
<BLOCK_ID>1073742038</BLOCK_ID>
<NUM_BYTES>0</NUM_BYTES>
<GENSTAMP>1233</GENSTAMP>
</BLOCK>
<RPC_CLIENTID/>
<RPC_CALLID>-2</RPC_CALLID>
</DATA>
</RECORD>
<RECORD>
<OPCODE>OP_CLOSE</OPCODE>//关闭
<DATA>
<TXID>2486</TXID>
<LENGTH>0</LENGTH>
<INODEID>0</INODEID>
<PATH>/tmp/shuguo修改名字后的.txt._COPYING_</PATH>
<REPLICATION>3</REPLICATION>
<MTIME>1623595664258</MTIME>
<ATIME>1623595663210</ATIME>
<BLOCKSIZE>134217728</BLOCKSIZE>
<CLIENT_NAME/>
<CLIENT_MACHINE/>
<OVERWRITE>false</OVERWRITE>
<BLOCK>
<BLOCK_ID>1073742038</BLOCK_ID>
<NUM_BYTES>33</NUM_BYTES>
<GENSTAMP>1233</GENSTAMP>
</BLOCK>
<PERMISSION_STATUS>
<USERNAME>root</USERNAME>
<GROUPNAME>supergroup</GROUPNAME>
<MODE>420</MODE>
</PERMISSION_STATUS>
</DATA>
</RECORD>
<RECORD>
<OPCODE>OP_RENAME_OLD</OPCODE>//重命名
<DATA>
<TXID>2487</TXID>
<LENGTH>0</LENGTH>
<SRC>/tmp/shuguo修改名字后的.txt._COPYING_</SRC>
<DST>/tmp/shuguo修改名字后的.txt</DST>
<TIMESTAMP>1623595664280</TIMESTAMP>
<RPC_CLIENTID>06419ca9-9766-40dd-adaa-cf02c0216f98</RPC_CLIENTID>
<RPC_CALLID>9</RPC_CALLID>
</DATA>
</RECORD>
</EDITS>
思考:NameNode 如何确定下次开机启动的时候合并哪些 Edits?
RPC_CLIENTID>06419ca9-9766-40dd-adaa-cf02c0216f98</RPC_CLIENTID>
<RPC_CALLID>9</RPC_CALLID>
思考:NameNode 如何确定下次开机启动的时候合并哪些 Edits?
按照镜像记录的最大值,只合并比记录的大的,小的都是合并过得。
学习路径:https://space.bilibili.com/302417610/,如有侵权,请联系q进行删除:3623472230