当前位置: 首页 > news >正文

Hadoop HDFS-SecondaryNameNode(2nn)详细介绍

作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

图片

中间件,我给它的定义就是为了实现某系业务功能依赖的软件,包括如下部分:

Web服务器

代理服务器

ZooKeeper

Kafka

RabbitMQ

Hadoop HDFS(本章节)

前面我们介绍了HDFS的安装,在单机版本里面一共启动了3个java进程:

NameNode,DataNode,SecondaryNameNode,下面我们就来分别介绍这3个进程,今天是SecondaryNameNode

2NN(Secondary NameNode, Secondary NN)是 Hadoop 分布式文件系统(HDFS)中用于辅助 NameNode 管理元数据的重要组件,虽然名称中带有 “NameNode”,但它并非 NameNode 的备用节点,核心功能是减轻 NameNode 的负担并优化元数据管理。以下是关于它的详细介绍:

基本概念与核心作用

在 HDFS 中,NameNode 负责存储和管理整个文件系统的元数据(如文件目录结构、文件与数据块的映射关系等),这些元数据的变更会被记录在编辑日志(EditLog) 中,而FsImage 则是元数据的快照(包含某一时刻的完整元数据)。随着集群运行,EditLog 会不断增长,若长期不处理,会导致 NameNode 启动时加载和合并 EditLog 的时间过长,影响系统效率。

2NN 的核心作用是定期合并 EditLog 和 FsImage,生成新的 FsImage 并回传给 NameNode,从而减少 EditLog 的体积,减轻 NameNode 的压力,同时为元数据提供一定的备份能力。

简单来说:NameNode 在运行期间只会写 EditLog,而不会主动将 EditLog 和 FsImage 合并成新的 FsImage。这个合并过程(Checkpoint)需要依赖外部组件完成,比如单机部署下的 SecondaryNameNode。

工作机制(合并流程)

2NN 的工作流程主要围绕 “EditLog 与 FsImage 的合并” 展开,具体步骤如下:

请求元数据:2NN 定期(可通过配置参数 dfs.namenode.checkpoint.period 设定,默认 1 小时)向 NameNode 发送合并请求,NameNode 收到请求后,会暂停向当前 EditLog 写入新的变更,转而创建一个新的 EditLog 文件(如 edits_new),后续的元数据变更会写入这个新文件。

获取元数据文件:NameNode 将当前的 FsImage 和未合并的 EditLog 发送给 2NN。

合并操作:2NN 将 FsImage 加载到内存,然后逐条执行 EditLog 中的变更操作,生成一个新的 FsImage(fsimage.ckpt)。这个过程相当于将 EditLog 中的增量变更 “固化” 到 FsImage 中,使新的 FsImage 包含最新的元数据状态。

回传新 FsImage:2NN 将合并后的新 FsImage 发送回 NameNode,NameNode 接收后会用它替换旧的 FsImage,并将之前创建的 edits_new 重命名为正式的 EditLog 文件,至此完成一次合并。

通过这一过程,EditLog 会被定期 “清空”(合并到 FsImage 中),避免其无限增长,同时 NameNode 无需自己执行合并操作,节省了计算资源。

图片

同 NameNode 的关系

  • 依赖关系:2NN 依赖 NameNode 提供的 FsImage 和 EditLog,自身不参与元数据的实时管理,也不处理客户端请求(所有客户端请求均由 NameNode 处理)。
  • 数据同步限制:2NN 仅定期合并元数据,因此它存储的元数据是 “准实时” 的(取决于合并周期),并非与 NameNode 完全同步。
  • 非高可用角色:2NN 不能在 NameNode 故障时直接接管其工作(这是 Standby NameNode 的功能)。若 NameNode 故障且未配置高可用(HA),即使有 2NN,也需要手动恢复元数据(从 2NN 拷贝 FsImage 和 EditLog),且可能丢失最后一次合并后的元数据变更。


文章转载自:

http://OJwGkldP.qrwdg.cn
http://lrFN00j4.qrwdg.cn
http://JIw8bsbv.qrwdg.cn
http://HUh4Vn3Y.qrwdg.cn
http://0fGbWrZ2.qrwdg.cn
http://U3FNJYXg.qrwdg.cn
http://6PlcC22Z.qrwdg.cn
http://55liKdjb.qrwdg.cn
http://AiQlgd8c.qrwdg.cn
http://16nz4vBd.qrwdg.cn
http://h3BTa46b.qrwdg.cn
http://6nGXMR0P.qrwdg.cn
http://kP61TUI6.qrwdg.cn
http://dggCys1Q.qrwdg.cn
http://Xb35Hydl.qrwdg.cn
http://dT2n9tR2.qrwdg.cn
http://3cYxnYep.qrwdg.cn
http://vvJpsoan.qrwdg.cn
http://M7H6qNWE.qrwdg.cn
http://x1wxVRrO.qrwdg.cn
http://3ibXs6Rh.qrwdg.cn
http://e9nIJOn5.qrwdg.cn
http://hbLnLJz1.qrwdg.cn
http://SII2Yh8o.qrwdg.cn
http://1C7nKyTU.qrwdg.cn
http://tQmblVYA.qrwdg.cn
http://RtZYOfee.qrwdg.cn
http://BEGvufDf.qrwdg.cn
http://7WnG8FyN.qrwdg.cn
http://sLo63Ecv.qrwdg.cn
http://www.dtcms.com/a/365009.html

相关文章:

  • 趣味学RUST基础篇(泛型)
  • OpenCL 中 内存对象完全详解和实战示例
  • 【Cursor-Gpt-5-high】StackCube-v1 任务训练结果不稳定性的分析
  • Vue3 + Ant Design Vue 实现多选下拉组件(支持分组、搜索与标签省略)
  • 【教程】IDEA中导入springboot-maven工程
  • websocket用于控制在当前页只允许一个用户进行操作,其他用户等待
  • 【教程】2025 IDEA 快速创建springboot(maven)项目
  • 通过IDEA写一个服务端和一个客户端之间的交互
  • JetBrains 2025 全家桶 11合1 Windows直装(含 IDEA PyCharm、WebStorm、DataSpell、DataGrip等)
  • Linux 对目录授予用户读写权限的方法
  • kafka:【1】概念关系梳理
  • 华清远见25072班I/O学习day4
  • Flutter代码生成:告别重复劳动,效率飙升
  • 51单片机-LED与数码管模块
  • OpenHarmony Ability“全家桶”彻底拆解:从UIAbility到ExtensionAbility一文说清楚
  • 学习嵌入式的第三十二天——网络编程——TCP
  • 【机器学习学习笔记】逻辑回归实现与应用
  • 爬取m3u8视频完整教程
  • GitHub 上那些值得收藏的英文书籍推荐(计算机 非计算机类)
  • 一键掌握服务器健康状态与安全风险
  • 前端视角下的 Web 安全攻防:XSS、CSRF、DDoS 一次看懂
  • 02、连接服务器的几种方式
  • 企业文档安全守护者全面测评:7款加密软件深度解析,让商业机密固若金汤
  • JVM分析(OOM、死锁、死循环)(JProfiler、arthas、jvm自带工具)
  • 股指期货可以通过移仓长线持有吗?
  • 基于springboot的在线答题练习系统
  • 【正则表达式】 正则表达式的元字符是什么?正则表达式的元字符有什么作用?
  • 微软rStar2-Agent:新的GRPO-RoC算法让14B模型在复杂推理时超越了前沿大模型
  • DAO LLC:怀俄明州首个承认去中心化自治组织法人化的新里程碑
  • Android Looper源码阅读