- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 HDFS 上保存文件时,它会拆分文件并相应地存储并将信息存储在编辑日志中,一切都很好。
我的问题是:当我向namenode请求读取操作时,它会从哪里查看datanode的详细信息?
来自 fsimage 还是编辑日志?
如果是从 fsimage 看,每隔一小时会生成一个新的 fsimage。
如果我在那个时间间隔之前请求它,会发生什么?
最佳答案
让我们分解关于文件系统的每一位信息存储在 NameNode 上的位置。
文件系统命名空间(目录和文件的层次结构)完全存储在 NameNode 的内存中。没有磁盘缓存。一切都在内存中。 FsImage 仅用于在失败的情况下保持持久性。它在启动时只读。 EditLog 存储对 FsImage 的更改;同样,EditLog 在启动时是只读的。事件 NameNode 在正常操作期间永远不会读取 FsImage 或 EditLog。但是,BackupNode或 Standby NameNode (取决于您的配置)将定期将新的 EditLog 条目与旧的 FsImage 组合以生成新的 FsImage。这样做是为了加快启动速度并减少磁盘数据结构的大小(如果没有进行压缩,EditLog 的大小将无限增长)。
上面讨论的命名空间包括从文件到包含在该文件中的 block 的映射。此信息保存在 FsImage/EditLog 中。但是,这些 block 的位置不会保留在 FsImage 中。此信息仅暂时存在于 NameNode 的内存中。在启动时,使用从所有 DataNode 接收到的 block 报告重建 block 的位置。每个 DataNode 本质上都告诉 NameNode,“我有 block ID AAA, BBB, CCC, ...”等等,NameNode 使用这些报告来构造所有 block 的位置。
为了简单地回答您的问题,当您从 NameNode 请求读取操作时,所有信息都是从内存中读取的。磁盘 I/O 仅在写入操作时执行,以将更改持久保存到 EditLog。
主要来源:HDFS Architecture Guide ;我也是 HDFS 核心代码的贡献者。
关于hadoop - namenode从哪里获取datanode的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48137695/
如果所有 Namenode 都发生故障,Secondary namenode 的作用是什么? 最佳答案 在开始之前,我将解释一下 NN 和 SNN 的作用。 NameNode: 它包含数据节点的元数据
我正在尝试在 ec2-instance 上安装 Hadoop-2.6.0。 我下载并安装了 Hadoop。我还设置了环境变量。尝试启动 hdfs 服务时出现以下错误。 [ec2-user@ip-10-
您好,我在 HA 集群配置时间遇到了所有这些错误。请帮助我哪里错了。 14/09/08 11:13:38 INFO namenode.AclConfigFlag: ACLs enabled? fals
我按照以下链接中的步骤在我的 Ubuntu 12.04 中安装了 Hadoop。 http://www.bogotobogo.com/Hadoop/BigData_hadoop_Install_on_
当我尝试启动 DataNode 时出现此错误。据我所知,RPC 参数仅用于 HA 配置,我没有设置(我认为)。 2014-05-18 18:05:00,589 INFO [main] impl.Me
我在我的mac上安装了hadoop,我按照hadoop安装一步一步来 当我执行hdfs namenode -format hadoop 总是返回错误 无法找到或加载类 org.apache.hadoo
我知道之前有人问过这个问题,但我想不出解决方案。当我尝试运行 hdfs name node -format 时出现以下错误: Could not find or load main class org
我正在尝试使用在 Amazon EC2 上使用 Hadoop 和 HDFS 运行的 Dedoop 应用程序。 Hadoop 集群设置完毕,Namenode JobTracker 和所有其他守护进程都在
我是hadoop的新手,所以我有一些疑问。如果主节点发生故障,hadoop 集群会发生什么?我们能否在没有任何损失的情况下恢复该节点?是否可以保留一个辅助主节点在当前主节点发生故障时自动切换为主节点?
我试图用一个namenode和两个datanode(slave1和slave2)设置Hadoop Cluster,所以我从Apache Hadoop下载了zip文件,并将其解压缩到namenode和d
我试图用一个名称节点和四个数据节点配置 hadoop。我能够在一台机器上成功配置名称节点和作业跟踪器并将其启动。 但是在我要配置数据节点的机器上,我做了以下操作: 我将 hadoop-2.0.0-cd
如果我运行: sbin/start-dfs.sh 然后它实际上并没有启动一个名称节点尽管打印: Starting namenodes on [0.0.0.0] 0.0.0.0: starting na
我的第一个问题,我会尽量不把事情搞砸:) 出于学习目的,我正在 4 节点集群上安装 Hadoop 2.9.0。我已经按照官方 Apache Hadoop 2.9.0 文档和一些谷歌页面开始安装/配置名
我是新手,我正在尝试找到解决这个问题的方法。为了在 Ubuntu 15.10 上设置 Hadoop 2.7.2 http://idroot.net/tutorials/how-to-install-a
我在 OSX(单节点集群模式)上运行 Hadoop 1.2.1,除了 namenode 之外,一切似乎都在工作:当我运行 start-all.sh 时,namenode 无法运行。这个可以在运行sto
NameNode 有关NameNode的更多信息,请参阅HDFS。 表和区域的HDFS利用率 要确定HBase在HDFS上使用的空间大小,请使用NameNode中的hadoop shell命令。
我通过sqoop命令将数据从mysql成功上传到HDFS。 MySQL Hadoop集群有 1个名称节点 1个用于次要NameNode的节点 Jobtracker的1个节点 3个用于Datanade
我在配置 core-site.xml 文件中将端口更改为 9000 on 5000 并启动了一个脚本 ./hadoop namenode 结果我收到了以下消息(我只给出了从屏幕上看到的部分,因为在日志
我无法在 hadoop fs -ls/命令上查看我的 HDFS 中的文件,我认为这是因为名称节点未运行。我已尝试格式化名称节点以及更改核心站点中的端口.xml 到不同的值。我的 JPS 仍然没有列出
我刚刚开始从 Hadoop:权威指南 一书中学习 hadoop。 我按照伪分发模式下的 Hadoop 安装教程进行操作。我启用了 ssh 的无密码登录。在第一次使用之前格式化 hdfs 文件系统。第一
我是一名优秀的程序员,十分优秀!