HADOOP::Fsimage和Edits解析

HADOOP::Fsimage和Edits解析NameNode 被格式化之后 将在 opt modulehadoop 3 1 3 data tmp dfs name curent 目录中产生如下文件 seen txidVERSION HDFS 文

大家好,欢迎来到IT知识分享网。

NameNode被格式化之后,将在/opt/module hadoop-3.1.3/data/tmp/dfs/name/curent目录
中产生如下文件
fsimage_ 0000000000000000000
fsimage_ 0000000000000000000.md5
seen_txid
VERSION
(1) Fsimage文件: HDFS文件系统元数据的一个永久性的检查点,其中包含HDFS文件系统的
所有目录和文件inode的序列化信息。
(2) Edits文件:存放HDFS文件系统的所有更新操作的路径,文件系统客户端执行的所有写操
作首先会被记录到Edits文件中。
(3) seen_txid文件 保存的是一个数字,就是最后一个edits_的数字
(4) 每次NameNode 启动的时候都会将Fsimage文件读入内存,加载Edits里面的更新操作,
保证内存中的元数据信息是最新的、同步的,可以看成NameNode启动的时候就将
Fsimage和Edits文件进行了合并。

HADOOP::Fsimage和Edits解析

(1) 查看fsimage文件
语法:
hdfs oiv –p 文件类型 -i 镜像文件 -o 转换后文件输出路径
举例:
[hadoop@hadoop101 current]$ pwd
/opt/module/hadoop-3.1.3/data/dfs/name/current
[hadoop@hadoop101 current]$ hdfs oiv -p XML -i fsimage_0000000000000000025 -o
/opt/module/hadoop-3.1.3/fsimage.xml
[hadoop@hadoop101 current]$ cat /opt/module/hadoop-3.1.3/fsimage.xml
HADOOP::Fsimage和Edits解析
看不懂
HADOOP::Fsimage和Edits解析
将显示的
xml
文件内容拷贝到
Idea
中创建的
xml
文件中,并格式化。部分显示结果如下。
HADOOP::Fsimage和Edits解析
可以看到Fsimage的信息  比如mtime修改时间   replication 副本数等等   还有我创建的目录文件都可以在fsimage中看到
思考:可以看出,Fsimage中没有记录块所对应DataNode,为什么?
在集群启动后,要求DataNode上报数据块信息,并间隔一段时间后再次上报。
集群启动时Namenode不知道Datanode的信息  是Datanode主动上报数据块信息的
(2)查看edits文件
语法:
hdfs oev -p 文件类型 -i编辑日志 -o 转换后文件输出路径
举例:
[hadoop@hadoop101 current]$ hdfs oev -p XML -i edits_0000000000000000012-
0000000000000000013 -o /opt/module/hadoop-3.1.3/edits.xml
[hadoop@hadoop101 current]$ cat /opt/module/hadoop-3.1.3/edits.xml
HADOOP::Fsimage和Edits解析
2.Checkpoint 时间设置
1)通常情况下,SecondaryNameNode每隔一小时执行一次。
[hdfs-default.xml]
<property> <name>dfs.namenode.checkpoint.period</name> <value>3600s</value> </property>
2)一分钟检查一次操作次数,当操作次数达到1百万时,SecondaryNameNode执行一次。
<property> <name>dfs.namenode.checkpoint.txns</name> <value></value> <description>操作动作次数</description> </property> <property> <name>dfs.namenode.checkpoint.check.period</name> <value>60s</value> <description> 1分钟检查一次操作次数</description> </property>
1.DataNode 工作机制
HADOOP::Fsimage和Edits解析
1.DataNode 工作机制
(1)一个数据块在DataNode 上以文件形式存储在磁盘上,包括两个文件,一个是数据
本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳。
(2)DataNode 启动后向NameNode 注册,通过后,
周期性(6 小时)
的向NameNode 上
报所有的块信息。
DN 向NN 汇报当前解读信息的时间间隔,默认6 小时;
<property> <name>dfs.blockreport.intervalMsec</name> <value></value> <description>Determines block reporting interval in milliseconds.</description> </property>
DN 扫描自己节点块信息列表的时间,默认6 小时
<property> <name>dfs.datanode.directoryscan.interval</name> <value>21600s</value> <description>Interval in seconds for Datanode to scan data directories and reconcile the difference between blocks in memory and on the disk. Support multiple time unit suffix(case insensitive), as described in dfs.heartbeat.interval. </description> </property>
DN 向NN 汇报当前解读信息的时间间隔,默认6 小时;
(3)心跳是每3 秒一次
心跳返回结果带有NameNode 给该DataNode 的命令
如复制块
数据到另一台机器,或删除某个数据块。如果超
过10 分钟+30秒
没有收到某个DataNode 的
心跳,则认为该节点不可用。
(4)集群运行中可以安全加入和退出一些机器。

NameNode工作源码查看

HADOOP::Fsimage和Edits解析

在做HDFS的时候已经将需要的依赖导入到pom.xml中了

下面就是上课讲的查看源码!!!!当时自己还有点没听懂

1)ctrl + n 全局查找namenode,进入NameNode.java

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/153938.html

(0)
上一篇 2025-02-28 22:10
下一篇 2025-02-28 22:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信