Name节点在哪里存储fsImage并编辑Log?

时间:2014-04-20 12:10:45

标签: hadoop hdfs

我是一名java程序员,正在学习Hadoop。 我读到HDFS中的Name节点将其信息存储到两个文件中,即fsImage& Editlog的。在启动的情况下,它从磁盘和磁盘读取这些数据。执行检查点操作。

但在许多地方我还读到Name Node将数据存储在RAM&这就是为什么apache建议为名称节点服务器使用具有高RAM的机器。

请赐教我这个。 它存储在RAM中的数据是什么?它在哪里存储fsImage并编辑Log?

对不起,如果我问了什么明显的话。

5 个答案:

答案 0 :(得分:5)

我先回答一下

  

它在RAM中存储了哪些数据?它在哪里存储fsImage并编辑Log?

在RAM中 - 用于阻止和阻止数据节点映射的文件。 在持久存储中(包括编辑日志和fsimage) - 文件相关元数据(权限,名称等)

关于fsimage和editlog @ mashuai的存储位置,答案是现货。

有关更详细的讨论,请参阅this

答案 1 :(得分:4)

当namenode启动时,它会从永久存储(磁盘)加载fsimage,它位于由属性dfs.name.dir(hadoop-1.x)或dfs.namenode.name.dir指定的位置(hadoop-2.x) )hdfs-site.xml。 Fsimage被加载到主内存中。另外,当您在namenode启动期间询问时,它会执行检查点操作。 Namenode将Fsimage保存在RAM中以便快速提供请求。

除初始检查点外,可以通过调整hdfs-site.xml中的以下参数来控制后续检查点。

dfs.namenode.checkpoint.period       # in second 3600 Secs by default
dfs.namenode.checkpoint.txns         # No of namenode transactions

答案 2 :(得分:3)

它在dfs.name.dir中存储了fsimage和editlog,它位于hdfs-site.xml中。启动集群时,NameNode会将fsimage和editlog加载到内存中。

答案 3 :(得分:1)

当名称节点启动时,它将进入安全模式。它从持久存储加载FSImage并重放编辑日志以创建HDFS存储的更新视图(文件到块映射)。然后它将此更新的FSImage写入持久存储。现在,Name节点等待来自数据节点的块报告。从块报告中,它创建BLOCK TO DATA NODE MAPPING。当名称节点收到某个块报告阈值时,它将退出安全模式,名称节点可以开始为客户端请求提供服务。每当客户端完成元数据的任何更改时,NameNode(NN)首先在编辑日志段中将​​事务更改随着事务ID的增加而变为持久存储(Hard Disk)。然后它更新其RAM中的FSImage。

答案 4 :(得分:0)

Fsimage和editlog存储在dfs.name.dir中,它位于hdfs-site.xml中。 在集群启动期间,NameNode将fsimage和editlog加载到内存(RAM)。