HADOOP::Fsimage和Edits解析

news/2024/5/20 3:39:58 标签: hdfs, 大数据, hadoop
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文件进行了合并。

(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
看不懂
将显示的 xml 文件内容拷贝到 Idea 中创建的 xml 文件中,并格式化。部分显示结果如下。
可以看到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
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>1000000</value>
<description>操作动作次数</description>
</property>
<property>
<name>dfs.namenode.checkpoint.check.period</name>
<value>60s</value>
<description> 1分钟检查一次操作次数</description>
</property>
1.DataNode 工作机制
1.DataNode 工作机制
(1)一个数据块在DataNode 上以文件形式存储在磁盘上,包括两个文件,一个是数据
本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳。
(2)DataNode 启动后向NameNode 注册,通过后, 周期性(6 小时) 的向NameNode 上
报所有的块信息。
DN 向NN 汇报当前解读信息的时间间隔,默认6 小时;
<property>
<name>dfs.blockreport.intervalMsec</name>
<value>21600000</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工作源码查看

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

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

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


http://www.niftyadmin.cn/n/5235267.html

相关文章

计算机组成原理-指令格式

文章目录 现代计算机的结构回忆&#xff1a;计算机的工作过程总览指令的定义指令格式零地址指令一地址指令二三地址指令四地址指令小结 指令-按指令长度分类指令-按操作码长度分类指令-按操作类型分类总结 现代计算机的结构 回忆&#xff1a;计算机的工作过程 总览 指令的定义 …

深入理解Java中继承的高级使用方案

摘要&#xff1a; 继承是Java中的一项强大的特性&#xff0c;它允许子类从父类中继承属性和方法。然而&#xff0c;继承的高级使用方案涉及更复杂的概念和技术&#xff0c;可以帮助开发人员构建更加灵活、可维护和可扩展的代码。本文将深入探讨Java中继承的高级用法&#xff0c…

代理模式介绍(静态代理、jdk动态代理、cglib代理)

一、静态代理 &#xff08;一&#xff09;定义 1、定义 为其他对象提供一种代理以控制对这个对象的访问&#xff1b; 2、涉及到的角色 &#xff08;1&#xff09;抽象主题角色&#xff1a;真实主题和代理主题的共同接口&#xff0c;便于在使用真实主题的地方都可以使用代理…

【动手学深度学习】(九)Kaggle房价预测

文章目录 一、代码1.下载和缓存数据集2.访问和读取数据集3.数据预处理4.训练5.K折交叉验证6.模型选择 【相关总结】1.os.makedirs()2.os.path.join()3.os.path.exits()4.os.path.dirname()5.os.path.splittext()6.pd.read_csv()7.iloc[]--pands8.pd.concat()9.pd.get_dummies()…

Google Guava 数学工具使用详解

文章目录 数学数值运算取整范围值比较其他 数学 在 Guava 中&#xff0c;数学&#xff08;Math&#xff09;模块提供了一些常用的数学运算功能&#xff0c;包括数值运算、取整、范围值比较等。下面详细介绍一些 Guava 数学运算的使用方法和示例。 数值运算 IntMath 类提供了处…

删除容器挂载卷打包容器镜像并传到阿里云

简单记录下打包上传的全过程&#xff0c;补充docker知识&#xff0c;利用阿里云进行docker镜像共享开发。 阿里云登录 sudo docker login --usernameyouxiangyouxiang.com registry.cn-hangzhou.aliyuncs.com这个登录密码可以在容器镜像服务/实例列表/镜像仓库页面左侧tab下的…

如何在Ubuntu上安装pip3

一、检查系统是否安装pip3 首先&#xff0c;我们需要检查系统中是否已经安装了pip3。为此&#xff0c;我们可以运行以下命令&#xff1a; pip3 --version如果系统已经安装了pip3&#xff0c;您将会看到输出结果类似于&#xff1a; pip 19.0.3 from /usr/local/lib/python3.6…

sourceTree的下载和安装

sourceTree的下载和安装 一、概述 SourceTree 是一款免费的 Git 和 Hg 客户端管理工具&#xff0c;支持 Git 项目的创建、克隆、提交、push、pull 和合并等操作。它拥有一个精美简洁的界面&#xff0c;大大简化了开发者与代码库之间的 Git 操作方式&#xff0c;这对于不熟悉 …