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 和编辑日志 的相关文章

  • 在 Google Cloud Dataproc 环境中使用 Hadoop 流式处理运行 python map reduce 作业时出错

    我想使用 hadoop 流方法在 Google Cloud Dataproc 中运行 python map reduce 作业 我的map reduce python脚本 输入文件和作业结果输出位于Google Cloud Storage中
  • C# 中的字符串常量内存池

    大家都知道 Net框架中String对象是直接存储在堆内存中的 我只是想了解 Net 框架中是否为字符串保留了内存 在java中 有一个为字符串保留的内存 称为SCMP 字符串常量内存池 字符串在其中像堆内存中的其他对象一样被初始化和垃圾收
  • 小/大 numpy 数组的释放处理方式是否不同?

    我正在尝试调试我的大型 Python 应用程序的内存问题 大部分记忆都在numpy由Python类管理的数组 所以Heapy http guppy pe sourceforge net 等等都是无用的 因为它们不占内存numpy数组 因此
  • 如何估计 std::map 的内存使用情况?

    例如 我有一个已知 sizeof A 和 sizeof B 的 std map 而 map 内部有 N 个条目 您如何估计其内存使用情况 我想说这就像 sizeof A sizeof B N factor 但到底是什么因素呢 也许不同的公式
  • 在“delete this;”语句期间发生了什么?

    请考虑以下代码 class foo public foo foo void done delete this private int x 以下两个选项中发生了什么 并且有效吗 选项1 void main foo a new foo a gt
  • 以编程方式获取 Android 设备的所有 RAM 内存,而不仅仅是分配给用户进程的内存

    我有一台设备 我确信它的 RAM 内存为 512 MB 希望能够以编程方式检索该值 512 MB 到目前为止 我在互联网上遇到的主要是这两种方式 https stackoverflow com a 16143065 1521264 http
  • for 循环内存不足

    嘿 所以我认为如果我制作一个生成随机密码的小应用程序 然后让该应用程序运行所有可能性并尝试查看密码是什么 告诉我它尝试了多少次 那会很酷 有时应用程序可以工作 有时会崩溃 具体取决于密码是什么 我想知道是否可以采取任何措施来防止它因占用大量
  • 如何查找 PostgreSQL 数据库的上次更新时间?

    我正在使用一个批量更新的 postgreSQL 数据库 我需要知道数据库 或数据库中的表 上次更新或修改的时间 两者都可以 我看到 postgreSQL 论坛上有人建议使用日志记录并查询日志 这对我不起作用 因为我无法控制客户端代码库 你可
  • Hadoop 超立方体

    嘿 我正在启动一个基于 hadoop 的超立方体 具有灵活的维度数 有人知道这方面现有的方法吗 我刚刚发现PigOLAP草图 http wiki apache org pig PigOLAPSketch 但没有代码可以使用它 另一种方法是Z
  • 删除指向对象的 C++ 指针

    我认为删除命令会释放我分配的内存 有人可以解释为什么删除后我似乎仍然有内存在使用吗 class Test public int time int main Test e e new Test e gt time 1 cout lt lt e
  • PHP:读取字体文件的 TrueType/OpenType 元数据

    如何阅读字体详细信息 例如 字体在其元数据中包含版权 姓氏 设计者 版本等信息 我还希望脚本能够计算文件中的字形数量 并返回字体支持的语言 例如 典型的字体可能包含西方语言 瑞典语和罗马语言支持 并具有数百个字形 它应该支持 truetyp
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • Hadoop 作业:任务在 601 秒内无法报告状态

    在伪节点上运行 hadoop 作业时 任务失败并被杀死 错误 任务尝试 在 601 秒内无法报告状态 但同一个程序正在通过 Eclipse 运行 本地作业 任务 大约有 25K 个关键字 输出将是所有可能的组合 一次两个 即大约 25K 2
  • 如何使用Python和h5py读取HDF5属性(元数据)

    我有一个 HDF5 文件 里面有多个文件夹 每个文件夹都添加了属性 有些将属性称为 元数据 我知道如何访问文件夹内的键 但不知道如何使用 Python 提取属性h5py包裹 以下是 HDFView 的属性 Folder1 800 4 Gro
  • 使用 HttpClient 的 .NET Core SPNEGO 身份验证

    我目前正在编写一个简单的基于 NET Core 的客户端 用于通过 WebHCat 与 Hadoop 集群进行交互 并且我正在尝试弄清楚如何使用 SPNEGO 进行身份验证 就像在curl 或 Powershell Core 等中一样 使用
  • PhantomJS 网页内存消耗?

    是否有一种编程方式 因为我想在运行时自动执行 方式来查看网页在通过 PhantomJs 运行时使用了多少内存 我也在使用 casperjs 如果这有帮助的话 我已经搜索了很多但没有找到任何方法 PhantomJs 使用 QtWebKit 因
  • Dynamics Crm:获取状态代码/状态代码映射的元数据

    在 Dynamics CRM 2011 中 在事件实体上 状态原因 选项集 也称为状态代码 与 状态 选项集 也称为状态代码 相关 例如看这个截图 当我使用 API 检索状态原因选项集时 如下所示 RetrieveAttributeRequ
  • 结构中的内存布局差异

    我在 C 中有以下结构 struct A int a double b float c 该结构与添加了函数的结构之间的内存布局是否存在差异 struct B int a double b float c void foo B foo do
  • 如何配置Hive仓库路径?

    我修改了这部分

随机推荐

  • 适用于 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会被刷新 为了提高效率 辅助名称节点定期执行检查点