Fsimage 和 Edits 解析| 学习笔记

开发者学堂课程【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 >​​·

上一篇:Windows下安装NTP服务器


下一篇:如何系统的学习 Elasticsearch ?