Hadoop Namenode 元数据 - fsimage 和编辑日志

2024-02-11

据我所知,出于性能原因,fsimage 在启动时加载到内存中,并且任何进一步的事务都会添加到编辑日志中,而不是添加到 fsimage 中。

当namenode重新启动时,内存中的fsimage会被刷新。为了提高效率,辅助名称节点定期执行检查点来更新 fsimage,以便名称节点恢复更快。所有这些都很好。

但我不明白的一点是, 假设一个文件已经存在,并且有关该文件的信息位于内存中的 fsimage 中。 现在我将此文件移动到另一个位置,该位置在编辑日志中更新。 现在,当我尝试列出旧文件路径时,它抱怨它不存在或其他什么。

这是否意味着 namenode 也会查看编辑日志,这与内存中 fsimage 的目的相矛盾?或者它如何知道文件位置已更改?


答案是查看编辑日志中的信息。如果编辑日志中没有信息,这个问题对于我们将新文件写入 hdfs 的用例来说是正确的。当您的 namenode 正在运行时,如果您删除 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hadoop Namenode 元数据 - fsimage 和编辑日志 的相关文章

  • 为什么组合器输入记录的数量比映射的输出数量多?

    Combiner 在 Mapper 之后 Reducer 之前运行 它将接收给定节点上的 Mapper 实例发出的所有数据作为输入 然后它将输出发送到Reducers 因此组合器输入的记录应小于映射输出的记录 12 08 29 13 38
  • 用户空间栈和堆的内存布局

    最近在研究OS 网上有一张图 展示了用户空间和内核空间的内存布局 以及栈 堆等的布局 在这个图中我看到栈位于用户空间的最高内存地址 高于堆 数据段等 为了检查这一点 我在调试视图下使用了 vs2012 中的内存观察器窗口 这是我的代码 in
  • 我的程序有内存泄漏

    IBAction play2 CFBundleRef mainBundle CFBundleGetMainBundle CFURLRef soundFileURLRef soundFileURLRef CFBundleCopyResourc
  • 当我只想更改一个列属性时,是否必须在 SQL 语句中包含所有列属性?

    我有一个 MySQL 数据库 我想通过向所有列添加注释来进行注释 从我读到的MySQL 文档 http dev mysql com doc refman 5 5 en alter table html 在更改其中任何一个时 必须包括数据类型
  • Hadoop安装问题:

    我跟着this http www bogotobogo com Hadoop BigData hadoop Install on ubuntu single node cluster phpHadoop 安装教程 不幸的是 当我运行全部启动
  • boost::serialization 序列化期间内存消耗较高

    正如主题所示 在将大量数据序列化到文件时 我遇到了 boost serialization 的一个小问题 问题在于应用程序序列化部分的内存占用量大约是要序列化的对象内存的 3 到 3 5 倍 值得注意的是 我拥有的数据结构是基类指针和指向该
  • Spark 上的 Hive 2.1.1 - 我应该使用哪个版本的 Spark

    我在跑蜂巢2 1 1 Ubuntu 16 04 上的 hadoop 2 7 3 根据Hive on Spark 入门 https cwiki apache org confluence display Hive Hive on Spark
  • hive查询无法通过jdbc生成结果集

    我是 Hive 和 Hadoop 的新手 在我的教程中 我想将表创建为 import java sql SQLException import java sql Connection import java sql ResultSet im
  • 猪如何过滤不同的对(对)

    我是猪的新手 我有一个 Pig 脚本 它在两个元素之间生成制表符分隔的对 每行一对 例如 John Paul Tom Nik Mark Bill Tom Nik Paul John 我需要过滤掉重复的组合 如果我使用 DISTINCT 我会
  • 如何查找或计算Linux进程的页表大小和其他内核占用?

    我怎样才能知道 Linux 进程页表有多大 以及任何其他可变大小的进程统计 如果您真的对页表感兴趣 请执行以下操作 cat proc meminfo grep PageTables PageTables 24496 kB
  • 有关 Linux 内存类型的问题

    关于Linux内存我有以下问题 我知道活动内存是最常访问的内存部分 但是有人可以解释一下 linux 如何考虑将内存位置用于活动内存或非活动内存 主动存储器由哪些部分组成 磁盘 文件缓存是否被视为活动内存的一部分 有什么区别Buffers
  • Namenode高可用客户端请求

    谁能告诉我 如果我使用java应用程序请求一些文件上传 下载操作到带有Namenode HA设置的HDFS 这个请求首先去哪里 我的意思是客户端如何知道哪个名称节点处于活动状态 如果您提供一些工作流程类型图或详细解释请求步骤 从开始到结束
  • 如何在 Hadoop 中将 String 对象转换为 IntWritable 对象

    我想转换String反对IntWritableHadoop 中的对象 任何过程都可以进行转换 IntWritable value new IntWritable Integer parseInt someString 并处理以下可能性par
  • WPF 窗口关闭后不会释放内存

    我创建了一个测试代码 private void Application Startup 1 object sender StartupEventArgs e ShutdownMode System Windows ShutdownMode
  • gcc 不太可能使用宏

    我正在编写一段关键代码 其逻辑大致如下 if expression is true do something with extremely low latency before the nuke blows up This branch i
  • C 中的菱形数组排序

    我有以下 C 语言作业 我基本上需要一种方法而不是解决方案 我们有一个 13 x 13 的数组 在数组中 我们有一个需要考虑的菱形形状 该菱形之外的所有内容都初始化为 1 不重要 下面的 5 x 5 数组示例 x x 1 x x x 2 2
  • 序列化对于对象大小估计可靠吗?

    我使用序列化来估计对象使用的内存量 我已经读过this https stackoverflow com questions 426396 how much memory does a c net object use and this ht
  • 如何通过sparkSession向worker提交多个jar?

    我使用的是火花2 2 0 下面是我在 Spark 上使用的 java 代码片段 SparkSession spark SparkSession builder appName MySQL Connection master spark ip
  • __author__ 的起源是什么?

    使用私有元数据变量的约定在哪里 author 一个模块内部从何而来 This http mail python org pipermail python dev 2001 March 013328 htmlPython 邮件列表线程似乎暗示
  • 使用 Ffmpeg 编辑视频元数据

    我想更改视频元数据 原始视频信息 ffmpeg i video mp4 Metadata major brand mp42 minor version 0 compatible brands isomavc1mp42 creation ti

随机推荐

  • 适用于 boto3 的 PyCharm 智能感知

    在 PyCharm 中查看完整的智能感知 代码完成 选项时遇到问题 在 Windows 上使用 python 3 4 这些建议部分有效 import boto3 s boto3 Session boto3 will bring up lis
  • Cabal 无法确定 GHC 版本

    我目前正在尝试通过执行以下操作来更新 Cabal 1 14 0 cabal install 版本 0 14 0 cabal install cabal install 但是 这给了我一个 ExitFailure1 错误 setup The
  • 为什么在 Linux 中使用 kmalloc 和 GFP_DMA 时会得到高地址?

    我正在 Linux 中为 DMA 设备编写设备驱动程序 在Linux 设备驱动程序 第 15 章 http lwn net images pdf LDD3 ch15 pdf 它说 对于有这种限制的设备 应该分配内存 通过将 GFP DMA
  • 如何在沙盒 iframe (IE11) 中使用 javascript 创建 iframe 内容?

    我正在尝试通过创建 iframe 并使用 javascript 或 vbscript 动态构建 iframe 内容来构建在 Internet Explorer 中使用的测试页面 我通常会使用 data URI 但 IE 会阻止它 例子 看来
  • 迭代自定义元素中的 HTMLCollection

    如何在另一个自定义元素的 Shadow dom 中迭代一个自定义元素的实例 HTMLCollections 似乎没有按预期运行 我是一个 jQuerian 而且是普通 js 的新手 所以我确信我在某个地方犯了一个明显的错误 HTML
  • 有 CSS 媒体查询来检测 Windows 吗?

    我想指定两种略有不同的背景颜色 一种用于 Mac OS 一种用于 Windows 没有属性来指定用于查看网页的操作系统 但您可以使用 javascript 检测它 这里是检测操作系统的一些示例 var OSName Unknown OS i
  • Heroku 和 Zerigo 设置问题

    EDIT2 等待查看我的更改是否成功 编辑 我使用命令行 Zerigo install 命令重新安装了所有内容 最初的问题是手动设置 现在的问题是 我设置的自定义域无法正常工作 访问自定义域只会在 Chrome 中返回错误 哎呀 Googl
  • 用于构建成就系统的 Ruby/Rails 现代化工具

    我有兴趣为我的 Ruby on Rails 应用程序构建一个强大的成就系统 成就可以通过多种方式实现 通常 我们会有一些可能发生在多个模型上的标准 一些是必需的 一些是触发成就的可选 混合和匹配 我想说这类似于此处或 Foursquare
  • WPF-Prism CanExecute 方法未被调用

    我正在编写一个简单的登录用户控件 其中包含两个文本框 用户名和密码 和一个登录按钮 我希望仅在填写用户名和密码字段时启用登录按钮 我正在使用 Prism 和 MVVM LoginViewModel 包含一个名为 LoginCommand 的
  • 如何替换 Postgres 中的表?

    基本上我想这样做 begin lock table a alter table a rename to b alter table a1 rename to a drop table b commit 即获得控制权并替换我的旧桌子 而没有人
  • java.lang.ArrayIndexOutOfBoundsException : 0 是什么意思

    我的编译器一直指向这一行 arr i new specialDelivery name name2 weight special 和这个 arr i new specialDelivery name name2 weight special
  • Qt5参考文档:qch文件

    我想在 QtAssistant 中查看 Qt 参考文档 但是 Qt5 的安装没有附带 Qt 库的 qch 文档文件 我试图在http qt project org http qt project org但到处都找不到它们 如何获取 Qt5
  • 如何禁用 reCAPTCHA Flask App Builder

    我是 Flask 应用程序构建器的新手 正在尝试设置用户注册 但出于我的目的 我不需要 reCAPTCHA 有没有办法在配置文件中禁用 reCaptcha 我的配置文件如下所示 Uncomment to setup Public role
  • 在调用中使用查询参数时缓存记录? Ember-数据

    我有这条路线检索 2 个模型 App PanelRoute Ember Route extend model function var topologymin this store find topologymin var metricma
  • 自定义字体 Xcode 4.3

    我正在尝试使用这个字体 http www dafont com chalkboard font在我的项目中 但它不起作用 我在项目中添加了 ttf 文件 并将其名称添加到 MyApp Info plist 的键下 应用程序提供的字体 然后我
  • 匿名函数的上下文是什么?

    我有这样的代码 function demo this val 5 function this val 7 现在 当我在 Firefox 或 Chrome 控制台中执行此代码时 它会出现语法错误 我不明白为什么这是一个错误 因为我读过 jav
  • 为什么状态对组件可见?

    据我了解 vuex 的重点是通过仅通过突变 操作 获取器将其暴露给组件来保证状态的一致性 但是 组件可以直接操作 store state 而不使用突变 操作 可能会导致状态不一致 为什么vuex状态直接暴露出来 使用突变 动作 吸气剂等是建
  • 在页面刷新/导航时保留 Twitter Bootstrap 折叠状态

    我正在使用 Bootstrap 折叠 插件为一长串链接制作一个手风琴 Accordion body 标签包含 collapse 因此页面加载时所有组都会折叠 当您打开一个组并单击链接时 它会将您带到一个新页面以查看一些详细信息 然后单击后退
  • Matplotlib 中的日期和时间间隔绘图

    pyplotplot date函数期望以某种线条样式绘制日期和值对 是否有推荐的方法根据日期 时间值绘制多个值或间隔数据 要绘制间隔数据 您可以使用由错误栏 功能及用途axis xaxis date 使 matplotlib 格式化轴 例如
  • Hadoop Namenode 元数据 - fsimage 和编辑日志

    据我所知 出于性能原因 fsimage 在启动时加载到内存中 并且任何进一步的事务都会添加到编辑日志中 而不是添加到 fsimage 中 当namenode重新启动时 内存中的fsimage会被刷新 为了提高效率 辅助名称节点定期执行检查点