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

news2024/9/23 15:21:27

元数据管理

  • 元数据是什么
  • 元数据管理概述
    • 内存元数据
    • 元数据文件
      • 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.coloradmin.cn/o/839592.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SynergyNet(头部姿态估计 Head Pose Estimation)复现 demo测试

目录 0 相关资料1 环境搭建2 安装 SynergyNet3 下载相关文件4 编译5 测试 0 相关资料 SynergyNet(github):https://github.com/choyingw/SynergyNet 1 环境搭建 我用的AutoDL平台搭建 选择镜像 PyTorch 1.9.0 Python 3.8(ubuntu18.04) Cu…

2.Flink应用

2.1 数据流 DataStream:DataStream是Flink数据流的核心抽象,其上定义了对数据流的一系列操作DataStreamSource:DataStreamSource 是 DataStream 的 起 点 , DataStreamSource 在StreamExecutionEnvironment 中 创 建 ,…

Hi3798MV200 恩兔N2 NS-1 (一): 设备介绍和刷机说明

目录 Hi3798MV200 恩兔N2 NS-1 (一): 设备介绍和刷机说明Hi3798MV200 恩兔N2 NS-1 (二): HiNAS海纳思使用和修改Hi3798MV200 恩兔N2 NS-1 (三): 制作 Ubuntu rootfsHi3798MV200 恩兔N2 NS-1 (四): 制作 Debian rootfs 介绍 恩兔N2是一个家庭存储的系列产品, NS-1 是其中体积…

【数据结构和算法】排序算法

说明:以下排序如无特别说明,都是从小到大升序排序 1. 冒泡排序 核心思想:每个元素与其相邻元素比较,如果前者大于后者则交换,每次循环结束后会将最大值放到最后,像小水泡从底下冒到上面成大水泡一样&…

选择结构的学习

选择结构 思考以下问题: 常用的逻辑运算符及其作用? 请写出判断分数大于 60 并且分数小于 100 的表达式 if-else 选择结构执行的顺序是什么? 多重 if 选择结构的执行流程是怎样的? if 选择结构书写规范有哪些? 通过下…

SAP通过 SWO3找一些不在事务码BAPI里面的BAPI

找BAPI BAPI_SALESDOCUMENT_COPY 首先事务码BAPI: 下面的所有方法都找不到(随便点开一个) 进SWO3 双击进去,继续往下点,找到了

学习左耳听风栏目90天——第一天 1-90(学习左耳朵耗子的工匠精神,对技术的热爱)【洞悉技术的本质,享受科技的乐趣】

洞悉技术的本质,享受科技的乐趣 第一篇,我的感受就是 耗叔是一个热爱技术,可以通过代码找到快乐的技术人。 作为it从业者,我们如何可以通过代码找到快乐呢?这是一个问题? 至少目前,我还没有这种…

调试技巧(2)

6. 如何写出好(易于调试)的代码 6.1 优秀的代码: 代码运行正常bug很少效率高可读性高可维护性高注释清晰文档齐全 常见的coding技巧: 使用assert尽量使用const养成良好的编码风格添加必要的注释避免编码的陷阱。 这里讲一下assert…

python中计算2的32次方减1,python怎么算2的3次方

大家好,给大家分享一下怎么样用python编写2的n次方,n由键盘输入,很多人还不知道这一点。下面详细解释一下。现在让我们来看看! ---恢复内容开始--- 1、内置函数:取绝对值函数abs() 2、内置函数:取最大值max()&#xff…

【数据结构与算法——TypeScript】算法的复杂度分析、 数组和链表的对比

【数据结构与算法——TypeScript】 算法的复杂度分析 什么是算法复杂度(现实案例)? ❤️‍🔥 前面已经解释了什么是算法? 其实就是解决问题的一系列步骤操作、逻辑。 ✅ 对于同一个问题,我们往往有很多种解决思路和方法&#x…

url重定向

不安全的url跳转 不安全的url跳转问题可能发生在一切执行了url地址跳转的地方。 如果后端采用了前端传进来的(可能是用户传参,或者之前预埋在前端页面的url地址)参数作为了跳转的目的地,而又没有做判断的话 就可能发生"跳错对象"的问题。 url跳转比较直接的危害是…

【网络工程】网络流量分析工具 Wireshark

文章目录 第一章:WireShark介绍第二章:WireShark应用第三章:Wireshark 实战 第一章:WireShark介绍 Wireshark (前身 Ethereal):它是一个强大的网络包分析工具 ! 此工具主要是用来捕获网络数据包的,并且自动…

CBCGPRibbon 添加背景图片

resource.h中声明资源的ID:ID_RIBBON_BACKIMAGE rc文件中添加png图片路径: ID_RIBBON_BACKIMAGE PNG DISCARDABLE "res\\bkribbon.png" 代码中添加下测: //添加背景图片 m_wndRibbonBar.SetBackgroundImage(ID_RIB…

Redis 总结【6.0版本的】

如果源码不编译,是无法实现自动跳转的, Redis在win上编译有点麻烦,我是使用的CentOS环境,Clion编译 编译完就可以直接通过shell连接Redis server了 server.c 中放的是就是主类 :6000多行左右是入口main()函数位置 Red…

RabbitMQ 教程 | 第10章 网络分区

👨🏻‍💻 热爱摄影的程序员 👨🏻‍🎨 喜欢编码的设计师 🧕🏻 擅长设计的剪辑师 🧑🏻‍🏫 一位高冷无情的编码爱好者 大家好,我是 DevO…

分布式电网动态电压恢复器模拟装置电子设计大赛

wx供重浩:创享日记 对话框发送:85电网 获取完整论文报告结构框图工程源文件 摘要:本装置采用DC-AC及AC-DC-AC双重结构,前级采用功率因数校正(PFC)电路完成AC-DC变换,改善输入端电网电能质量。后…

01背包笔记

01背包题目链接 题意&#xff1a;有一个容量为m的背包以及n个可以拿的物品&#xff0c;给出n个物品的体积和价值&#xff0c;要求输出可以拿的最大价值 思路&#xff1a;代表在前i件物品中拿取总体积不超过j的最大价值 由此可以分情况讨论状态转移 当j<v[i]时&#xff0c;说…

【总结】p50蓝图概念、面向对象思想、函数事件宏的区别

p50蓝图概念、面向对象思想、函数事件宏的区别 函数的概念&#xff08;纯虚函数和函数&#xff09;宏的概念函数、事件、宏的区别变量的概念面向对象思想&#xff08;封装、继承、多态&#xff09;类和对象的关系Object、actor、pawn、Character、component之间的区别控制权、玩…

RTT(RT-Thread)时钟管理

目录 时钟管理 时钟节拍 RTT工程目录结构介绍 配置文件&#xff1a;rtconfig.h 获取系统节拍 获取系统节拍数函数 实例 定时器 RT_Thread定时器介绍 定时器源码分析&#xff08;了解即可&#xff09; rt_system_timer_init (硬件定时器初始化) rt_system_timer_thr…

python文件与目录操作

目录 文件编码 文件的读取 打开文件 mode常用的三种基础访问模式 读取文件 关闭文件 with open语法 文件的写入操作 文件综合案例 a.txt内容 代码实现 b.txt文件 目录操作 前言 os模块 具体方法 os.path模块 具体方法 文件编码 前言&#xff1a;由于计算机…