fsimage 和 edit 日志文件存储在哪个文件夹或实际位置,以便 namenode 在启动期间读取和合并?

Posted

技术标签:

【中文标题】fsimage 和 edit 日志文件存储在哪个文件夹或实际位置,以便 namenode 在启动期间读取和合并?【英文标题】:In which folder or where actually the fsimage and edit log files are stored for the namenode to read and merge during the startup? 【发布时间】:2014-03-26 10:03:15 【问题描述】:

namenode 启动时,它会从映像文件 fsimage 中读取 HDFS 状态,然后应用编辑日志文件中的编辑内容。

如果我没记错的话,Name 节点启动是指我们编写 start-all.sh 时。所以在这个启动时间我认为它读取 fsimage 并编辑日志并合并它们。但是它实际上从哪个文件夹或哪个位置读取了这两个东西?

【问题讨论】:

如果您认为以下答案对您有所帮助,请在参考时接受对其他人有用的答案。 【参考方案1】:

在hadoop-1.x start-all.sh 脚本内部执行两个操作start-dfs.shstart-mapred.sh。 start-dfs.sh 将启动 hdfs 所需的所有守护进程,即:datanode、namenode、secondary namenode

检查点操作(将编辑日志应用到 f​​simage)发生在 namenode 启动期间,并且可以通过调整参数 hdfs-site.xml --> dfs.namenode.checkpoint.period 在 namenode 运行期间配置此活动。

在namenode启动期间namenode守护进程从hdfs-site.xml -> dfs.name.dir.指定的目录加载fsimage这个属性应该已经被覆盖,否则它将采用默认值(file:///tmp/dfs/name/

通过检查hdfs-site.xml -> dfs.name.edits.dir 的值可以找到编辑日志的位置。 dfs.name.edits.dir 的默认值为 $dfs.name.dir。

以上属性名在hadoop-2.0中有所改变

【讨论】:

【参考方案2】:

当你启动守护进程时,namenode 会检查名为

的配置 xml 文件

核心站点.xml

位于您的 hadoop conf 文件夹中。在我的系统中,它位于 usr/lib/hadoop/conf 这是 hadoop 的安装目录。

在那个配置文件中你可以看到,

<configuration>
     <property>
         <name>hadoop.tmp.dir</name>
         <value>/var/lib/hadoop-0.20/cache/$user.name</value>
     </property>
</configuration>

在这段代码中/var/lib/hadoop-0.20/cache/是fsimage、fstime和edits log的位置。

如果namenode在某个特定时间发生故障,fsimage数据将临时存储在secondynamenode中,namenode恢复后临时数据将存储在fsimage中。

【讨论】:

【参考方案3】:

下面是您可以找到编辑和 fsimage 文件的位置..

/app/hadoop/tmp/dfs/name/current

[核心站点.xml]

<property><name>hadoop.tmp.dir</name><value>/app/hadoop/tmp</value>

我相信这会对你有所帮助..

【讨论】:

以上是关于fsimage 和 edit 日志文件存储在哪个文件夹或实际位置,以便 namenode 在启动期间读取和合并?的主要内容,如果未能解决你的问题,请参考以下文章

每日一题HDFS文件系统中,Fsimage和Edit的区别?(水滴互助)

Hadoop-2.4.1学习之edits和fsimage查看器

11.1.1namenode和datanode的数据结构和格式以及镜像fsimage和编辑日志edit

HDFS元数据管理:fsimage&edits

HDFS:edit log & fsimage

Edits和FsImage