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.mzph.cn/news/25290.shtml

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

相关文章

24届近5年上海大学自动化考研院校分析

今天给大家带来的是上海大学控制考研分析 满满干货~还不快快点赞收藏 一、上海大学 学校简介 上海大学是上海市属的综合性研究型大学,是教育部与上海市人民政府共建高校,是国家“211 工程”重点建设高校、上海市高水平地方大学建设高校&a…

elementui Cascader 级联选择使用心得

相信大家对于elementui并不陌生,作为适配Vue的优秀UI框架之一,一直被所有的开发者痛并快乐着。今天要记录的就是里边的主角之一Cascader。 首先先介绍一下Cascader ---> 当一个数据集合有清晰的层级结构时,可通过级联选择器逐级查看并选择…

【嵌入式环境下linux内核及驱动学习笔记-(18)LCD驱动框架1-LCD控制原理】

目录 1、LCD显示系统介绍1.1 LCD显示基本原理1.1.1 颜色的显示原理:1.1.2 图像的构成 1.2 LCD接口介绍1.2.1 驱动接口 - MCU接口1.2.2 驱动接口 - RGB接口1.2.3 驱动接口 - LVDS接口1.2.4 驱动接口 - MIPI接口1.2.5 RGB / MIPI / LVDS三种接口方式的区别&#xff1a…

【沁恒蓝牙mesh】CH58x系统时钟配置与计算

本文主要记录了【沁恒蓝牙mesh】CH58x系统时钟配置与计算 💖 作者简介:大家好,我是喜欢记录零碎知识点的小菜鸟。😎📝 个人主页:欢迎访问我的 Ethernet_Comm 博客主页🔥🎉 支持我&am…

Containerd数据持久化和网络管理

1. 轻量级容器管理工具 Containerd 2. Containerd的两种安装方式 3. Containerd容器镜像管理 4. Containerd数据持久化和网络管理 1、Containerd NameSpace管理 containerd中namespace的作用为:隔离运行的容器,可以实现运行多个容器。 查看命令帮助 # ctr namespac…

[IDEA]使用idea比较两个jar包的差异

除了一些小工具外,idea自带了jar包比较的功能。 把需要比对的jar包放到任意目录下,然后选中两个需要比较的jar包,右键,选择Compare Archives,然后就可以比较了。 这次疏忽了,每次打包前需要commit界面看一下…

极光笔记 | 浅谈企业级SaaS产品的客户成长旅程管理(上)—— 分析篇

本文作者:陈伟(极光用户体验部高级总监) “企业级SaaS产品与C端互联网产品特征差异很大,有些甚至是截然相反,这些特征也会成为后续客户成长旅程的重要影响变量。本文就如何设计并服务好企业级SaaS产品客户成长旅程进行…

CS 144 Lab Five -- the network interface

CS 144 Lab Five -- the network interface TCP报文的数据传输方式地址解析协议 ARPARP攻击科普 Network Interface 具体实现测试tcp_ip_ethernet.ccTCPOverIPv4OverEthernetAdapterTCPOverIPv4OverEthernetSpongeSocket通信过程 对应课程视频: 【计算机网络】 斯坦福大学CS144…

「Qt」常用事件介绍

🔔 在开始本文的学习之前,笔者希望读者已经阅读过《「Qt」事件概念》这篇文章了。本文会在上篇文章的基础上,进一步介绍 Qt 中一些比较常用的事件。 0、引言 当我们想要让控件收到某个事件时做一些操作,通常都需要重写相应的事件处…

js-5:==和===的区别,分别在什么情况下使用

1、等于操作符 等于操作符用两个等号()表示,如果操作数相等,则返回true。 javascript中存在隐式转换,等于操作符在比较中会先进行类型转换,再确定操作数是否相等。 遵循以下规则: 如果任一操作数…

Jupyter Notebook 未授权访问远程命令执行漏洞

漏洞描述 Jupyter是一个开源的交互式计算环境,它支持多种编程语言,包括Python、R、Julia等。Jupyter的名称来源于三种编程语言的缩写:Ju(lia)、Py(thon)和R。 Jupyter的主要特点是它以笔记本(Notebook)的形式组织代码…

PoseFormer:基于视频的2D-to-3D单人姿态估计

3D Human Pose Estimation with Spatial and Temporal Transformers论文解析 摘要1. 简介2. Related Works2.1 2D-to-3D Lifting HPE2.2 GNNs in 3D HPE2.3 Vision Transformers 3. Method3.1 Temporal Transformer Baseline3.2 PoseFormer: Spatial-Temporal TransformerSpati…

redis缓存雪崩和缓存击穿

目录 缓存雪崩 解决方案: 缓存击穿 ​解决方案 缓存雪崩 缓存雪崩是指在同一时段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到达数据库,带来巨大压力。 解决方案: u 给不同的 Key 的 TTL 添加随机值 u 利用 Redis …

MongoDB SQL

Microsoft Windows [版本 6.1.7601] 版权所有 (c) 2009 Microsoft Corporation。保留所有权利。C:\Users\Administrator>cd C:\MongoDB\Server\3.4\binC:\MongoDB\Server\3.4\bin> C:\MongoDB\Server\3.4\bin> C:\MongoDB\Server\3.4\bin>net start MongoDB 请求的…

ArcGIS Pro简介下载安装地址

ArcGIS Pro简介 ArcGIS Pro是一款功能强大的地理信息系统(GIS)软件,由Esri开发。它为用户提供了一种直观、灵活且高效的方式来处理、分析和可视化地理数据。ArcGIS Pro具有现代化的用户界面和工作流程,使用户能够更好地利用地理信…

Linux下安装VMware虚拟机

目录 1. 简介 2. 工具/原料 2.1. 下载VMware 2.2. 安装 1. 简介 ​ VMware Workstation(中文名“威睿工作站”)是一款功能强大的桌面虚拟计算机软件,提供用户可在单一的桌面上同时运行不同的操作系统,和进行开发、测试 …

自监督去噪:Noise2Void原理和调用(Tensorflow)

文章原文: https://arxiv.org/abs/1811.10980 N2V源代码: https://github.com/juglab/n2v 参考博客: https://zhuanlan.zhihu.com/p/445840211https://zhuanlan.zhihu.com/p/133961768https://zhuanlan.zhihu.com/p/563746026 文章目录 1. 方法原理1.1 Noise2Noise回…

Android google admob Timeout for show call succeed 问题解决

项目场景: 项目中需要接入 google admob sdk 实现广告商业化 问题描述 在接入Institial ad 时,onAdLoaded 成功回调,但是onAdFailedToShowFullScreenContent 也回调了错误信息 “Timeout for show call succeed.” InterstitialAd.load(act…

MySQL5.7源码编译Debug版本

编译环境Ubuntu22.04LTS 1 官方下载MySQL源码 https://dev.mysql.com/downloads/mysql/?spma2c6h.12873639.article-detail.4.68e61a14ghILh5 2 安装基础软件 cmakeclangpkg-configperl 参考:https://dev.mysql.com/doc/refman/5.7/en/source-installation-prere…

命令行快捷键Mac Iterm2

原文:Jump forwards, backwards and delete a word in iTerm2 on Mac OS iTerm2并不允许你使用 ⌥← 或 ⌥→ 来跳过单词。 你也不能使用 ⌥backspace 来删除整个单词。 下面是在Mac OS上如何配置iTerm2以便能做到这一点的方法。 退格键 首先,你需要将你的左侧 ⌥…