HDFS中的NAMENODE元数据管理(超详细)

元数据管理

  • 元数据是什么
  • 元数据管理概述
    • 内存元数据
    • 元数据文件
      • fsimage内存镜像文件
      • edits log编辑日志
    • namenode加载元数据文件顺序
  • 元数据管理相关目录文件
    • 元数据相关文件
    • VERSION
    • seen_txid
  • 元数据文件查看(OIV,OEV)
  • SecondaryNameNode介绍
    • checkpoint机制
      • SNN Checkpoint--触发机制
  • 元数据文件恢复
    • namenode存储多目录
    • 从SNN中恢复

元数据是什么

  • 在HDFS中,元数据主要值得是文件相关的元数据,有namenode管理维护。从广义的角度来说,因为namenode还需要管理众多的DataNode结点,因此DataNode的位置和健康状态信息也属于元数据

元数据管理概述

在hdfs中,文件相关的元数据具有两种类型:

  • 文件自身属性信息
    文件名称、权限、修改时间,文件大小、复制因子、数据块大小
  • 文件块位置映射信息
    记录文件块和DataNode之间的映射信息,即哪个块位于哪个结点上
    在这里插入图片描述
    按照存储形式分别为内存元数据和元数据文件两种,分别存在内存和磁盘上

内存元数据

  • 为了保证用户操作元数据交互高效,延迟低,namenode把所有的元数据都存储在内存中,我们叫做内存元数据。内存中的元数据是最完整的,包括文件自身属性、文件块位置映射信息
  • 但是内存的致命问题是,断点数据丢失,数据不会持久化。因此namenode又辅佐了元数据文件来保证运输局的安全完整

元数据文件

元数据文件有两种:fsimage内存镜像文件,Edits log编辑日志

fsimage内存镜像文件

  • 是内存元数据的一个持久化的检查点。但是fsimage中仅包含hadoop文件中文件自身属性相关的元数据信息,但不包含文件块位置的信息。文件块位置信息只存储在内存中,是由DataNode启动加入集群的时候,向DataNode进行数据块的汇报得到的,并且后续间断指定时间进行数据块报告
  • 持久化的动作是数据从内存到磁盘的IO过程。会对namenode正常服务造成一定的影响,不能频繁的进行持久化

edits log编辑日志

为了避免两次持久化之间数据丢失的问题,又设计了edits log编辑日志文件。文件中记录的是HDFS所有的更改操作(文件创建,删除或修改)的日志,文件系统客户端执行的更改操作首先会被记录到edits文件中

在这里插入图片描述

namenode加载元数据文件顺序

  • fsimage和edits文件都是经过序列化的,在namenode启动的时候,它会昂fsimage文件中的内容加载到内存中,之后再执行edits文件中各项操作,是的内存中的元数据和实际的同步,存在内存中的元数据支持客户端的读操作,也是最完整的元数据
  • 当客户端对HDFS中的文件进行新增或者修改操作,操作记录首先被计入edits日志文件中,当客户端操作成功后,相应的元数据会更新到内存元数据中。因为fsimage文件一般都很大(GB级别的很常见),如果所有的更新操作都往fsimage文件中添加,这样会导致系统运行的十分缓慢
  • HDFS这种设计实现着手于:一时内存中的数据更新、查询快,极大缩短操作响应时间;二是内存中元数据丢失风险颇高(断电T_T),因此辅佐元数据镜像文件(fsimage)+编辑日志文件(edits)的备份机制进行确保元数据的安全
  • namenode维护整个文件系统元数据。因此,元数据的准确管理,影响着HDFS提供文件存储服务的能力

元数据管理相关目录文件

  • namenode元数据存储目录由参数:dfs.namenode.name.dir指定

  • 格式化完成之后,将会在$hdfs.namenode.name.dir/current目录下创建如下的文件:
    在这里插入图片描述

  • dfs.namenode.name.dir是在hdfs-site.xml文件中配置的,默认值如下
    在这里插入图片描述

元数据相关文件

VERSION

  • namespaceID/clusterID/blockpollID
    这些都是HDFS集群的唯一标识符。标识符被用来防止DataNodes意外注册到另一个集群中的namenode上。这些宝石在联邦(federation)部署中特别重要。联邦模式下,会有多个namenode独立工作。每个namenode提供惟一的命名空阿静(namespaceID),并管理一组唯一的文件块池(blockpoolID)。clusterID将整个集群结合在一起作为单个逻辑单元,在集群中所有节点上都是一样的。
  • storageType
    说明这个文件存储的是什么进程的数据结构信息。如果是DataNode节点,storageType=DATA_NODE
  • cTime
    namenode存储系统创建时间,首次格式化文件系统这个属性是0,当问文件系统升级之后的时间戳
  • layoutVersion
    HDFS元数据格式的版本。HDFS升级时会进行更新
    在这里插入图片描述

在这里插入图片描述

seen_txid

  • 包含上一次checkpoint时的最后一个事务ID,这不是namenode接受的最后一个事务ID
  • seen_txid内容不会在每个事务性操作生都更新,只会在checkpoint时更新
  • namenode启动时会检查seen_txid文件,以验证它至少可以加载该数目的事务。如果无法验证加载事务,namenode将终止启动
    在这里插入图片描述

元数据文件查看(OIV,OEV)

  • fsimage文件是hadoop文件系统元数据的一个永久性的检查点,包含hadoop文件系统中的所有目录和文件idnode的序列化信息;对于文件来说,包含的信息有修改的时间、访问时间、块大小和组成一个文件块信息等;而对于目录来说,包含的主要有修改时间,访问控制权限等信息
  • oiv是offline image viewer的缩写,可将hdfs fsimage文件的内容转储为人类可读的格式
  • 常用命令:hdfs oiv -i fsiamge_00000000000050 -p XML -o fsimage.xml
    在这里插入图片描述
  • edits log文件存放的是hadoop文件系统所有更新的操作记录日志
  • 文件系统客户端执行的所有写操作首先会被记录到edits文件中
  • oev是offline edits viewer(离线edits查看器)的缩写,该工具不需要hadoop集群处于运行状态
  • 命令:hdfs oev -i edits_0000000000000000090-00000000000000000000089 -o edits.xml
  • 在输出文件中,每个RECORD记录了一次操作,示例如下:
    在这里插入图片描述

SecondaryNameNode介绍

  • SNN可以减小edits logs文件的大小和得到一个最新的fsimage文件,这样也会减小在namenode上的压力

checkpoint机制

1.checkpoint核心是把fsimage与edits log合并生成一个新的fsimage的过程,然后NN会生成一个新的编辑日志文件:edits new,便于记录后续操作记录
2. SNN会将旧的edits log文件和上次fsimage复制到自己本地(使用HTTP GET方式)
3. SNN首先将fsimage载入到内存,然后一条一条的执行edits文件中的操作,使得内存中的fsimage不断更新,这个过程就是edits和fsimage文件合并。合并结束,SNN将内存中的数据dump生成一个新的fsimage文件
4. SNN将新生的Fimage new文件复制到NN节点。至此刚好是一个轮回,等待下一次checkpoint触发secondarynamenode进行工作,一直这样循环操作
在这里插入图片描述

SNN Checkpoint–触发机制

  • core-site.xml
    dfs.namenode.checkpoint.period=3600 //两次连续的checkpoint之间的时间间隔。默认一小时
    dfs.namenode.checkpoint.txns=1000000 //最大没有执行checkpoint事务的数量,满足将强制执行紧急checkpoint,及时尚未达到检查点周期。默认100万事务数量

元数据文件恢复

namenode存储多目录

  • namenode元数据存储目录由参数:dfs.namenode.name.dir
  • dfs.namenode.name.dir属性可以配置多个目录,各个目录存储的文件结构和内容都完全一样,相当于备份,这样做的好处就是当其中一个目录坏了,也不会影响到hadoop的元数据,特别是当其中一个目录是NFS(网络文件系统network filesystem)之上,及时你这台机器损坏了,元数据也得到保存

从SNN中恢复

  • SNN 在checkpoint的收会将fsimage和edits log下载到自己本机上本地存储目录下。并且在checkpoint之后也不会删除
  • 如果NN中的fsimage真的出问题了,还是可以用SNN中的fsimage替换一下NN中的fsimage,虽然已经不是最新的fsimage,但是我们可可以将损失减小到最少
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/62035.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

uC-OS2 V2.93 STM32L476 移植:系统启动篇

前言 前两篇已经 通过 STM32CubeMX 搭建了 NUCLEO-L476RG 的 STM32L476RG 的 裸机工程,下载了 uC-OS2 V2.93 的源码,并把 uC-OS2 的源文件加入 Keil MDK5 工程 本篇适配 uC-OS2 的 系统定时器(Systick)与 PendSV_Handler&#xf…

【C#学习笔记】类型转换

文章目录 类型转换字符转数字GetNumericValueConvert.ToInt32隐式转换计算 字符串转数字Parse 或 TryParse 方法 字节数组转整数 as,is强制类型转换isas 用户定义的转换 类型转换 我们简单地将值类型分为5种:整数型,浮点型,布尔型…

增强型Web安全网关在银行的应用

销售,绝不是降低身份去取悦客户,而是像朋友一样给予合理的建议。你刚好需要,我刚好专业!仅此而已! 乔.吉拉德 健康的安全体系,还可以更完善 浙江某商业银行股份有限公司是一家成立多年的商业银行&#xf…

抖音seo源码开发源代码搭建分享

抖音SEO源码开发涉及到以下几个方面: 前端开发:包括抖音SEO页面的设计与布局,以及需要使用到的前端技术,如HTML、CSS、JavaScript等。 后端开发:包括抖音SEO页面的数据获取和处理,以及需要使用到的后端技术…

开源进展 | WeBASE v3.1.0发布,新增多个实用特性

WeBASE是一个友好、功能丰富的区块链中间件平台,通过一系列通用功能组件和实用工具,助力社区开发者更快捷地与区块链进行交互。 目前WeBASE已更新迭代至v3.1.0版本,本次更新中,WeBASE带来了最新的合约Java脚手架导出功能&#xff…

数字电路的重要概念——静态功耗和动态功耗

静态功耗和动态功耗: CMOS电路功耗是由静态功耗和动态功耗组成的,动态功耗远大于静态功耗 1:静态功耗: 我们从一个简单的反相器角度来理解和说明静态功耗的概念,众所周知,反相器是由PMOS和NMOS互补组成的…

当服务器域名出现解析错误的问题该怎么办?

​  域名解析是互联网用户接收他们正在寻找的域的地址的过程。更准确地说,域名解析是人们在浏览器中输入时使用的域名与网站IP地址之间的转换过程。您需要站点的 IP 地址才能知道它所在的位置并加载它。但,在这个过程中,可能会出现多种因素…

关于游戏的笔记

关于搭建秦时明月2一键端,并且开启秘境神秘商人东海寻仙幻化 1.该游戏下主要的目录 gm端 服务框架 服务端 2.修改对应的文件 C:\qs\Q2Server\server\conf_common\ManagerAddress.xmlC:\qs\Q2Server\server\conf_manager\GateServer.xml修改ip 3.启动gm startup…

HTML 是什么?它的全称是什么?

聚沙成塔每天进步一点点 专栏简介HTML是什么?HTML的全称是什么?写在最后 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是为那些对We…

【项目管理】PMP备考宝典-第一章《引论》

文章目录 第一节:项目管理的意义1.什么是项目2.项目管理的前世今生3.项目管理与战略的关系4.组织管理模式的转型升级5.推动项目管理普及的力量 第二节:项目管理的逻辑1.项目管理目标的演变2.项目与运营的关系3."人-过程-环境"三个领域的关系4.…

Sencha Ext.NET Crack 快速应用程序的正确工具集

Sencha Ext.NET Crack 快速应用程序的正确工具集 Sencha Ext.NET是一个高级的ASP.NET核心组件框架,它包含了强大的跨浏览器Sencha Ext JS库。通过140多个预构建和专业测试的UI组件实现企业级性能和生产效率。Sencha Ext.NET使用尖端的Web技术创建功能强大的Web应用程…

反弹shell的N种姿势

预备知识1. 关于反弹shell 就是控制端监听在某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转到控制端。reverse shell与telnet,ssh等标准shell对应,本质上是网络概念的客户端与服务端的角色反转。2. 反弹shel…

JavaScript学习(3)

Web API 是开发人员的梦想。 它可以扩展浏览器的功能它可以极大简化复杂的功能它可以为复杂的代码提供简单的语法 什么是 Web API? API 指的是应用程序编程接口(Application Programming Interface)。 Web API 是 Web 的应用程序编程接口…

YOLOv5基础知识入门(2)— YOLOv5核心基础知识讲解

前言:Hello大家好,我是小哥谈。YOLOV4出现之后不久,YOLOv5横空出世。YOLOv5在YOLOv4算法的基础上做了进一步的改进,使检测性能得到更进一步的提升。YOLOv5算法作为目前工业界使用的最普遍的检测算法,存在着很多可以学习…

西瓜书读书笔记整理(五)—— 第四章 决策树

第四章 决策树 4.1 基本流程4.1.1 什么是决策树算法4.1.2 决策树学习的目的4.1.3 决策树学习基本过程4.1.4 决策树学习基本算法4.1.5 递归结束的三种情况 4.2 划分选择4.2.1 信息增益(information gain)—— ID3 决策树学习算法属性划分准则4.2.2 信息增…

JUC之线程中断与LockSupport

什么是中断 首先一个线程不应该由其他线程来强制中断或停止,而是应该由线程自己自行停止。其次在Java中没有办法立即停止一条线程,然而停止线程却显得尤为重要,如取消一个耗时操作。因此,Java提供了一种用于停止线程的机制——中…

力扣 -- 467. 环绕字符串中唯一的子字符串

一、题目 二、解题步骤 下面是用动态规划的思想解决这道题的过程&#xff0c;相信各位小伙伴都能看懂并且掌握这道经典的动规题目滴。 三、参考代码 class Solution { public:int findSubstringInWraproundString(string s) {int ns.size();vector<int> dp(n,1);int re…

Godot 4 源码分析 - 增加格式化字符串功能

Godot 4的主要字符串类型为String&#xff0c;已经设计得比较完善了&#xff0c;但有一个问题&#xff0c;格式化这块没怎么考虑。 String中有一个format函数&#xff0c;但这个函数只有两个参数&#xff0c;这咋用&#xff1f; String String::format(const Variant &va…

vue 新学习 06 js的prototype ,export暴露,vue组件,一个重要的内置关系

部分内容参考的这篇文章 原文链接&#xff1a;https://blog.csdn.net/harry5508/article/details/84025146 写的很好。 01 在js中&#xff1a; 原型链 注意&#xff1a;构造函数.prototype实例化对象.__proto__&#xff0c;都是指向函数的原型。 export&#xff1a; -export用…

Popover气泡卡片(antd-design组件库)简单使用

1.Popover气泡卡片 点击/鼠标移入元素&#xff0c;弹出气泡式的卡片浮层。 2.何时使用 当目标元素有进一步的描述和相关操作时&#xff0c;可以收纳到卡片中&#xff0c;根据用户的操作行为进行展现。 和 Tooltip 的区别是&#xff0c;用户可以对浮层上的元素进行操作&#xff…
最新文章