- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我知道 fsimage 在启动时加载到内存中,并且出于性能原因,任何进一步的事务都会添加到编辑日志而不是 fsimage。
当namenode重启时,内存中的fsimage会被刷新。为了提高效率,secondary name node 会定期做一个 checkpoint 来更新 fsimage,这样 namenode 的恢复会更快。这些都很好。
但是我不明白的一点是,假设一个文件已经存在并且关于这个文件的信息在内存中的 fsimage 中。现在我将此文件移动到另一个位置,该位置在编辑日志中更新。现在,当我尝试列出旧文件路径时,它会提示它不存在或其他什么。
这是否意味着 namenode 也会查看编辑日志,这与内存中的 fsimage 的目的相矛盾?或者它如何知道文件位置已更改?
最佳答案
答案是查看编辑日志中的信息。如果编辑日志中的信息不可用当我们将新文件写入 hdfs 时,这个问题适用于用例。当您的名称节点正在运行时,如果您删除 fsimage 文件并尝试读取它能够读取的 hdfs 文件。
从正在运行的名称节点中删除 fsimage 文件不会导致读/写操作出现问题。当我们重启namenode时,会出现找不到镜像文件的错误。
让我试着给出更多的解释来帮助你。
只有在启动 hadoop 时才会查找 fsimage 文件,如果它不存在,则 namenode 不会出现并记录格式化 namenode。
hadoop format -namenode 命令创建 fsimage 文件(如果存在编辑日志)。在 namenode 启动文件元数据从编辑日志中获取(如果在编辑日志中找不到信息,则通过 fsimage 文件搜索)。所以 fsimage 只是作为上次保存信息的检查点。这也是辅助节点与编辑日志保持同步(1 小时/100 万次交易后)的原因之一,因此从最后一个检查点启动时不需要同步太多内容。
如果您打开安全模式(命令:hdfs dfsadmin -safemode enter)并使用 saveNamespace(命令:hdfs dfsadmin -saveNamespace),它将显示下面提到的日志消息。
2014-07-05 15:03:13,195 INFO org.apache.hadoop.hdfs.server.namenode.FSImage: Saving image file /data/hadoop-namenode-data-temp/current/fsimage.ckpt_0000000000000000169 using no compression
2014-07-05 15:03:13,205 INFO org.apache.hadoop.hdfs.server.namenode.FSImage: Image file /data/hadoop-namenode-data-temp/current/fsimage.ckpt_0000000000000000169 of size 288 bytes saved in 0 seconds.
2014-07-05 15:03:13,213 INFO org.apache.hadoop.hdfs.server.namenode.NNStorageRetentionManager: Going to retain 2 images with txid >= 0
2014-07-05 15:03:13,237 INFO org.apache.hadoop.hdfs.server.namenode.FSEditLog: Starting log segment at 170
关于memory - Hadoop Namenode 元数据 - fsimage 和编辑日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24288942/
我将 fsimage 存储在我的本地目录中,使用在“https://archive.cloudera.com/cdh/3/hadoop/hdfs_imageviewer.html”指定的离线查看器命令
需要帮助 我已经下载了通过 OIV 工具转换为带分隔符的 csv 文件的 fsimage。我还创建了一个配置单元表并将 csv 文件插入其中。 我对sql不太熟悉,所以查询数据很困难。 例如:文件中的
简介 目标:理解为什么 HDFS 的 NameNode 由 FSImage 和 EditLog 组成。 根据 this article EditLog 用于进行小的增量更新,例如将单个文件重命名为 F
我有一个问题,关于 fsimage 中的元数据是什么。我读到文件系统命名空间的所有突变,例如文件重命名、权限更改、文件创建、 block 分配都在 fsimage 中。但是 block 位置数据也是如
我知道在主节点中我们有名称节点,它在两个文件中维护一个元数据。一个是 FSImage,另一个是 Edit logs。 所以这个FSImage最初是在hadoop系统启动时加载的,这个FSImage包含
在检查点方面,权威指南说 1. The secondary asks the primary to roll its edits file, so new edits goes to a new fi
我们一直在运行一个 3 节点 AWS EMR 集群(1 个 NameNode,2 个 DataNode)。观察到 Namenode 检查点没有发生,fsImage,md5 文件没有更新。编辑日志堆积如
我知道 fsimage 在启动时加载到内存中,并且出于性能原因,任何进一步的事务都会添加到编辑日志而不是 fsimage。 当namenode重启时,内存中的fsimage会被刷新。为了提高效率,se
我是 Hadoop 的初学者。我想在 hadoop 中查看 fs-image 和编辑日志。查了很多博客,都不清楚。任何人都可以告诉我在 hadoop 中查看编辑日志/fs-image 文件的逐步过程。
在 Hadoop 集群中使用 HADOOP_HOME/hadoop dfsadmin -saveNamespace 合并 fsimage 和编辑而不对 namenode 重新加字符串是否正确? 如有错
当名称节点启动时,它从图像文件 fsimage 读取 HDFS 状态,然后应用编辑日志文件中的编辑。 如果我没记错的话,Name节点启动就是我们写start-all.sh的时候。因此,在启动期间,我认
我是一名优秀的程序员,十分优秀!