hadoop中hdfs的fsimage文件与edits文件

hadoop中hdfs的fsimage文件与edits文件的作用

首先,我们抛出fsimage和edits文件的功能描述。

Fsimage文件: HDFS文件系统元数据的一个永久性的检查点,其中包含HDFS文件系统的

所有目录和文件inode的序列化信息。

Edits文件:存放HDFS文件系统的所有更新操作的路径,文件系统客户端执行的所有写操

作首先会被记录到Edits文件中。

其次,我们详细描述fsimage文件和edits文件在NameNode中所扮演的角色。

当NameNode首次启动时

  1. 格式化文件系统,方便生成fsimage镜像文件;

  2. 启动NameNode

  • 读取fsimage文件,将文件内容加载进内存

  • 等待DataNade注册与发送blockreport

  1. 启动DataNode:
  • 向NameNode注册
  • 发送block_report(block_report的全称为Full Block Report,即全量块汇报,它主要是讲DateNode中存储的所有block信息都汇报给NameNode)
  • 检查fsimage中记录的块的数量和block report中的块的总数是否相同

​ 4.当客户端对文件系统进行操作时(创建目录,上传文件,删除文件等):

  • 此时内存中已经有文件系统改变的信息,但是磁盘中没有文件系统改变的信息,此时会将这些改变信息写入edits文件中,edits文件中存储的是文件系统的元数据发生变更的信息。

当第二次启动NameNode时:

  1. 此时直接读取fsimage 和edits 文件
  2. 将fsimage 和edits 文件合并成新的fsimage文件
  3. 创建新的edits文件,内容开始为空
  4. 启动DataNode

最后,我想问,读者是否对Secondary NameNode有所了解。当我们了解hdfs时通常只关注NameNode和DataNode,但却很少关注Secondary NameNode。

Secondary NameNode 负责合并 NameNode 的 edits文件到 fsimage 文件中

它的工作机制如下:

1.Secondary NameNode 询问 NameNode 是否进行checkpoint。

2.Secondary NameNode 请求执行 checkpoint;

3.NameNode将当前edits和fsimage拷贝到Secondary NameNode

4.Secondary NameNode将edits和fsimage加载到内存,并将两者合并

5.生成新的镜像文件fsimage.chkpoint

6.将fsimage.chkpoint拷贝到NameNode

7.NameNode负责将fsimage.chkpoint重新命名为fsimage

注意,如果NameNode中的元数据丢失的话,可以从Secondary NameNode恢复一部分元数据信息,但不能全部恢复。因为NameNode正在写的edits日志还没有拷贝到Secondary NameNode,这部分恢复不了了。

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

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

相关文章

C++笔记:STL容器库的使用

前置: 对于stl容器库,我只做了一些常用的笔记,关于更详细的使用可以参考:https://cppreference.com/https://cppreference.com/ 一.string--字符串 对于C中string字符串会比C语言的字符数组使用起来会顺手许多。 命名空间:std 关于…

二分最大值最小化-力扣-打家劫舍4

沿街有一排连续的房屋。每间房屋内都藏有一定的现金。现在有一位小偷计划从这些房屋中窃取现金。 由于相邻的房屋装有相互连通的防盗系统,所以小偷 不会窃取相邻的房屋 。 小偷的 窃取能力 定义为他在窃取过程中能从单间房屋中窃取的 最大金额 。 给你一个整数数…

蓝桥杯备考随手记: 二分查找

二分查找(Binary Search)是一种在有序数组中查找目标值的算法,也称为折半查找。它通过将目标值与数组的中间元素进行比较,来确定目标值在数组的哪一部分,然后将搜索范围缩小一半,再次比较,直到找…

使用串口给ESP8266发送AT指令无反应解决

解决方法:重新烧录固件 设置PC机波特率 设置PC机上的端口波特率和flash下载工具中的波特率一致,否则flash下载工具会一直提示串口连接失败。我这里将PC机上的串口波特率设置为115200,然后flash下载工具波特率也设置为115200 Windows系统上…

电脑远程控制esp32上的LED

1、思路整理 首先esp32需要连接上wifi 然后创建udp socket 接受udp数据 最后解析数据,控制LED 2、micropython代码实现 import network from socket import * from machine import Pin p2Pin(2,Pin.OUT)def do_connect(): #连接wifi wlan network.WLAN(network.…

芒果YOLOv8改进组合157:动态标签分配ATSS+新颖高效AsDDet检测头组合改进,共同助力VisDrone涨点1.8%,小目标高效涨点

💡本篇内容:【芒果YOLOv8改进ATSS标签分配策略|第三集】芒果YOLOv8改进组合157:动态标签分配ATSS+新颖高效AsDDet检测头组合改进,共同助力VisDrone涨点1.8%,小目标高效涨点 💡🚀🚀🚀本博客 标签分配策略ATSS改进+ 新颖高效AsDDet检测头组合改进,适用于 YOLOv8 …

超详细解读Transformer框架

Transformer是由谷歌大脑2017年在论文《Attention is All You Need》中提出的一种序列到序列(Seq2Seq)模型。自提出伊始,该模型便在NLP和CV界大杀四方,多次达到SOTA效果。NLP领域中,我们所熟知的BERT和GPT就是从Transformer中衍生出来的预训练…

使用Ollama在本地运行AI大模型gemma

1.下载: https://github.com/ollama/ollama/releases 2.配置环境变量 我的电脑-右键-属性-系统-高级系统设置-环境变量-【系统环境变量】新建 变量名:OLLAMA_MODELS (固定变量名) 变量值:E:\Ollama\Lib &#xff0…

iOS 开发中上传 IPA 文件的方法(无需 Mac 电脑)

引言 在 iOS 开发中,将 IPA 文件上传到苹果开发者中心是一个重要的步骤。通常情况下,我们需要使用 Mac 电脑上的 Xcode 或 Application Loader 工具来完成这个任务。然而,如果你没有 Mac 电脑,也没有关系,本文将介绍一…

Linux系统部署搭建AI私人知识库助手教程

前言 本篇文章教你如何搭建本地的私有大语言模型,和向量画数据库,实现一个本地的私有AI知识问答客服系统。需要用到的技术是开源项目由docker,fastgpt、one-api,开源LLM大模型,vllm或者ollama。 docker 是一款开源的应用容器引擎,用来快速构建服务。fastgpt 基于LLM大模型…

express里面的鉴权及express-session中间件的使用总结

了解 HTTP 协议的无状态性是进一步学习 Session 认证机制的必要前提。http 协议的无状态性,指的是客户端的每次 http 请求都是独立的,连续多个请求之间没有直接的关系,服务器不会主动保留每次 http 请求的状态。 什么是 Cookie Cookie 是存储…

如何在CentOS安装Nexus容器无公网IP远程管理本地仓库

文章目录 1. Docker安装Nexus2. 本地访问Nexus3. Linux安装Cpolar4. 配置Nexus界面公网地址5. 远程访问 Nexus界面6. 固定Nexus公网地址7. 固定地址访问Nexus Nexus是一个仓库管理工具,用于管理和组织软件构建过程中的依赖项和构件。它与Maven密切相关,可…

LeetCode-394. 字符串解码【栈 递归 字符串】

LeetCode-394. 字符串解码【栈 递归 字符串】 题目描述:解题思路一:辅助栈法解题思路二:递归法解题思路三:0 题目描述: 给定一个经过编码的字符串,返回它解码后的字符串。 编码规则为: k[encoded_string]…

Golang 为什么需要用反射

本质上是可以动态获取程序运行时的变量(类型) 比如现在我想实现一个通用的db插入函数,支持我传入所有类型的struct,每一种类型的struct是一个单独的表,以struct的名称作为表名,然后插入到不同的表中。 pa…

ios swift5 “Sign in with Apple“(使用苹果登录)怎样接入(第三方登录)集成AppleID登录

文章目录 截图1.在开发者网站的app id中添加Sign in with Apple功能2.在Xcode中添加Sign in with Apple功能3.代码:只有第一次登录的时候可以获取到用户名参考博客chatGPT答案 截图 1.在开发者网站的app id中添加Sign in with Apple功能 1.1 如果你新建app id,记得在…

Spring事务简介,事务角色,事务属性

1.Spring事务简介 事务作用:在数据层保障一系列的数据库操作同成功同失败Spring事务作用:在数据层或业务层保障一系列的数据操作同成功同失败 public interface PlatformTransactionManager{void commit(TransactionStatus status) throws TransactionE…

Qt 翻译工具:使用 tr() 函数实现多语言支持

引言 在开发跨平台应用程序时,支持多语言是一个常见需求。Qt 提供了一套完整的国际化工具,帮助开发者轻松实现应用程序的本地化。本文将介绍如何在 Qt 中使用 tr() 函数进行翻译,并总结一些常见的困难和解决方法。 使用 tr() 函数进行翻译 …

CSS中的类命名

CSS类名在开发中一般都是简单的命名一下,例如 nav、title、menu 等等,但是这也带来了问题,出现命名冲突的时候不知道是哪里引起的,加上 CSS 本身权重的问题就更加棘手。如果是小项目,代码不多、开发人员较少还可以控制…

plasmo开发浏览器插件动态setIcon修改插件图标和setBadgeText显示徽标

动态修改图标和设置徽标主要用到action这个api,官网地址:https://developer.chrome.com/docs/extensions/reference/api/action?hlzh-cn#method-setIcon 如果你使用官方原生的方式开发,加载和修改图标应该是比较简单的,但是如果…

2024.4.7力扣每日一题——王位继承顺序

2024.4.7 题目来源我的题解方法一 哈希表多叉树的前序遍历 题目来源 力扣每日一题;题序:1600 我的题解 方法一 哈希表多叉树的前序遍历 发现继承顺序的生成与多叉树的前序遍历一致,只需要在遍历过程中将已经去世的给排除就可以了。 如何存…