我是一名java程序员,正在学习Hadoop。 我读到HDFS中的Name节点将其信息存储到两个文件中,即fsImage& Editlog的。在启动的情况下,它从磁盘和磁盘读取这些数据。执行检查点操作。
但在许多地方我还读到Name Node将数据存储在RAM&这就是为什么apache建议为名称节点服务器使用具有高RAM的机器。
请赐教我这个。 它存储在RAM中的数据是什么?它在哪里存储fsImage并编辑Log?
对不起,如果我问了什么明显的话。
答案 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)。