开发者学堂课程【Hadoop 分布式文件系统 HDFS:课时名称】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/93/detail/1457
Fsimage 和Edits 解析
目录:
一、概念
二、oiv 查看 Fsimage 文件。
三、oev 查看 Edits 文件。
一、概念
NameNode被格式化之后,将在/opt/module/hadoop-2. 7.2/data/tmp/dfs/name/curent目录中产生如下文件
fs image_ 0 000000000000000000
fsimage_ 0 000000000000000000.nd5
seen_ txid
VERS ION
( 1 ) Fsimage文件:
HDFS文件系统元数据的一个永久性的检查点,其中包合 HDFS 文件系统的所有目录和文件 idnode 的序列化信息。
( 2 ) Edits 文件:
存放HDFS 文件系统的所有更新操作的路径,文件系统客户端执行的所有写操作首先会被记录到 Edits文件中。
( 3 ) seen, _txid文件保存的是一 个数字,就是最后一个edits_ 的数字
( 4 )每次NameNode启动的时候都会将Fsimage文件读入内存,加载Edits里面的更新操作,保证内存中的元数据信息是最新的、同步的,可以看成NameNode启动的时候就将Fsimage和Edits文件进行了合并。
二、oiv 查看 Fsimage文件。
(1)查看 oiv 和 oev 命令。
[atguigu@hadoop102 current]$ hdfs.
oiv apply the offline fsimage viewer to an fs image,
oev apply the offline edits viewer to an editsfile.
(2)基本语法。
hdfs oiv-p文件类型 -i 镜像文件 -0转换后文件输出路径。
(3)案例实操。
[atguigulhadoop102 current]$ pwd.
/opt/module/hadoop-2.7.2/data/ tmp/dfs/ name/ current.
[atguigu@hadoop102 current] $ hdfs oiv -p XML -i
fsimage_ 0000000000000000025 -0 /opt/module/hadoop-
2.7.2/ fs image . xml,
[atguigu@hadoop102 current] $ cat /opt/module/hadoop-
2.7.2/ fsimage . xml·
将显示的xml文件内容拷贝到Eclipse中创建的xml文件中,并格式化。部分显示结果如下。
<inode>,
<id>16386</id>
·
<type>DIRECTORY</type>
<name>user</ name> .
< mtime>1512722284477</mtime>.
<permi ssion>atguigu: supergroup: rwxr -xr-x</permi ssion>
<nsquota>-1</ nsquota>.
<dsquota>-1</dsquota>,
</ inode>,
<i node>,
<id>16387</id>
<type>DIRECTORY</type>,
<name>atguigu</ name>,
<mtime> 1512790549080< /mtime>,
<permission>atguigu: supergroup: rwxr-xr-x</ permission>
<
nsquota>-1</ nsquota>,
<dsquota>- l<1dsquota>+
</ inode>,
<i node>.
<id>16387</id>"
<type> DIRECTORY</ type>,
<name>atguigu</ name>,
<mtime>1512790549080</mtime
<permi ssion>a tguigu: supergroup: rwxr -xr-x</permission>
<nsquota>-1 < nsquota>,
<dsquota>-1</dsquota>,
</ inode>,
<i node>.
<id>16389</ id>,
<type>FILE</ type>,
<name>wc. input</name>.
<replication>3</ repl ication>,
<mtime>1512722322219< /mtime
<atime>1512722321610</atime>
<perferredBlockSize>134217728</per ferredBlockSize>,
<permission>atguigu: supergroup:rw-r--r--</permission>.
<permision>atguigu: supergroup:rw-r--r--</pe rmission>
<blocks>v
<b1ock>v
<id>1073741825</id>.
<genstamp> 1001</genstamp>st
<numBytes>59</ numBytes>v
</block>v
</blocks>s
</ inode >
思考:可以看出,Fsimage中没有记录块所对应DataNode,为什么?。
在集群启动后,要求DataNode.上报数据块信息,并间隔一段时间后再次上报。
三、oev查看Edits文件
(1)基本语法。
hdts oev-p 文件类型 -i编辑日志 -o转换后文件输出路径。
(2)案例实操。
[atguigu@hadoop102 current] $ hdfs oev -P XML -i
edits 0000000000000000012 -0000000000000000013 -0/ opt/module/hadoop-2.7.2/edits . xml.
[atguigu@hadoop102 current] $ cat /opt/module/hadoop-
<PERMISSION STATUS>
·
<USERNAME>a tguigu</USERNAME>
<GROUPNAME> supergroup</ GROUPNAME>
<MODE> 420< /MODE>
·
</ PERMISSION STATUS>
</ DATA>
·
</ RECORD>.
</EDITS >
·