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.sh
和start-mapred.sh
。 start-dfs.sh 将启动 hdfs 所需的所有守护进程,即:datanode、namenode、secondary namenode
检查点操作(将编辑日志应用到 fsimage)发生在 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查看器