广告
返回顶部
首页 > 资讯 > 精选 >checkpoint机制如何实现
  • 901
分享到

checkpoint机制如何实现

2023-07-05 02:07:37 901人浏览 安东尼
摘要

这篇文章主要讲解了“checkpoint机制如何实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“checkpoint机制如何实现”吧!checkpoint 机制的具体实现我们都知道为了优化

这篇文章主要讲解了“checkpoint机制如何实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“checkpoint机制如何实现”吧!

checkpoint 机制的具体实现

我们都知道为了优化分布式存储系统中 Namenode 的重启性能,我们引进了 checkpoint 机制和 FsImage 快照,使得 FsImage 和 editslog 共同为系统元数据提供持久化功能。

BackNode 节点冷备份

NameNode 的主要工作时维护系统中文件元数据,并实现其持久化;在每执行一个操作之后,NameNode 都要生成一个 editslog,最后刷盘(但是不是每生成一条数据就刷盘一次)。

从这我们可以发现,NameNode 进程,它需要额外分配出来一个线程,后台线程定时的去进行磁盘io的操作,其实这个是很影响本地 CPU 负载的;另外,假设这时候来了很多操作请求,那么系统中将有大量的线程用来来更新内存的文件目录树,这时候肯定是要加的了。此时如果系统还要每隔一段时间,耗费比如说几秒钟,甚至几分钟的时间来对文件目录树进行加锁,读取数据,写入本地磁盘;这样就会导致更新文件目录树,和读取文件目录树写入磁盘,它们之间会产生巨大的锁的冲突。

如果上述所有操作都在 NameNode 上执行的话,就太影响 NameNode 节点的性能了。

为此,我们需要考虑给系统中增加一个角色——BackNode,其实它的功能就有点像 hdfs 中的 SecondaryNameNode。

BackNode 是充当于 NameNode 的一个冷备份的角色,我们可以将 checkpoint 的操作交给其来执行,这样就可以减轻 NameNode 这边的性能消耗了。

checkpoint 的实现

BackNode 在启动的时候会启动一个 checkpoint 的调度任务:

// 调度任务:fsImageCheckpointerdefaultScheduler.schedule("FSImage Checkpoint操作", fsImageCheckpointer,        backupnodeConfig.getCheckpointInterval(), backupnodeConfig.getCheckpointInterval(), TimeUnit.MILLISECONDS);

这是一个定时任务,每隔一段时间就会被执行一次。

下面我们一起来看看 checkpoint 任务具体需要做些什么?

  • 判断当前系统中的 txid 和上一次 checkpoint 时的是否一致,不一致才继续执行

  • 根据当前系统中的数据生成 FsImage

  • 处理掉旧的 FsImage

具体代码如下:

@Overridepublic void run() {    log.info("BackupNode启动checkpoint后台线程.");    try {        // 如果是正在恢复元数据,则直接返回        if (nameSystem.isRecovering()) {            log.info("正在恢复元数据...");            return;        }        // 当前 maxid 和 之前记录的 maxid 相等        if (nameSystem.getMaxTxId() == lastCheckpointTxId) {            log.info("EditLog和上次没有变化,不进行checkpoint: [txId={}]", lastCheckpointTxId);            return;        }        // 以下讨论的情况是:当前 maxid 和 之前记录的 maxid 不相等(大于)        // 对当前内存中的数据生成快照        FsImage fsImage = nameSystem.getFsImage();        // 更新记录中的 maxid        lastCheckpointTxId = fsImage.getMaxTxId();        // 路径        String fsImageFile = backupNodeConfig.getFsImageFile(String.valueOf(System.currentTimeMillis()));        log.info("开始执行checkpoint操作: [maxTxId={}]", fsImage.getMaxTxId());        // 写入FsImage文件        doCheckpoint(fsImage, fsImageFile);        // 上传 FsImage 给 NameNode        uploadFsImage(fsImageFile);        // 删除旧的FSImage        namenodeClient.getDefaultScheduler().scheduleOnce("删除FSImage任务", fsImageClearTask, 0);    } catch (Exception e) {        log.error("FSImageCheckPointer error:", e);    }}

感谢各位的阅读,以上就是“checkpoint机制如何实现”的内容了,经过本文的学习后,相信大家对checkpoint机制如何实现这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: checkpoint机制如何实现

本文链接: https://www.lsjlt.com/news/349134.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • checkpoint机制如何实现
    这篇文章主要讲解了“checkpoint机制如何实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“checkpoint机制如何实现”吧!checkpoint 机制的具体实现我们都知道为了优化...
    99+
    2023-07-05
  • checkpoint机制具体实现示例详解
    目录checkpoint 机制的具体实现BackNode 节点冷备份checkpoint 的实现checkpoint 机制的具体实现 我们都知道为了优化分布式存储系统中 NameN...
    99+
    2023-02-07
    checkpoint 机制实现 checkpoint 机制
  • Linux中如何实现poll机制
    这篇文章给大家分享的是有关Linux中如何实现poll机制的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。所有的系统调用,基于都可以在它的名字前加上“sys_”前缀,这就是它在内核中对应的函数。比如系统调用open...
    99+
    2023-06-12
  • python的import机制如何实现
    本篇内容主要讲解“python的import机制如何实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python的import机制如何实现”吧!import 机制功能Python 的 impo...
    99+
    2023-06-30
  • Node如何实现JWT鉴权机制
    这篇文章主要介绍“Node如何实现JWT鉴权机制”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Node如何实现JWT鉴权机制”文章能帮助大家解决问题。一、为什么使用JWT一种技术的出现,就是弥补另一...
    99+
    2023-07-04
  • java的反射机制如何实现
    Java的反射机制是指在运行时动态获取和操作类的相关信息的能力。通过反射,可以在运行时获取类的属性、方法、构造函数等信息,还可以动态...
    99+
    2023-08-31
    java
  • java反射机制是如何实现的
    Java反射机制是通过Java的`java.lang.reflect`包中的类和接口来实现的。该包中包含了一些重要的类,如`Clas...
    99+
    2023-10-08
    java
  • 如何理解Spring AOP的实现机制
    这篇文章将为大家详细讲解有关如何理解Spring AOP的实现机制,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。AOP(Aspect Orient Programming),一般称为面向切面...
    99+
    2023-06-16
  • C语言如何实现位段机制
    这篇文章主要为大家展示了“C语言如何实现位段机制”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C语言如何实现位段机制”这篇文章吧。概念什么是位段?位段又称为位域,C语言允许在一个结构体中以位为单...
    99+
    2023-06-29
  • 如何实现Redis的LRU缓存机制
    这篇文章给大家分享的是有关如何实现Redis的LRU缓存机制的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前言最近在逛博客的时候看到了有关Redis方面的面试题,其中提到了Redis在内存达到最大限制的时候会使用...
    99+
    2023-06-14
  • ahooks控制时机的hook如何实现
    本篇内容主要讲解“ahooks控制时机的hook如何实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ahooks控制时机的hook如何实现”吧!Function Component VS Cl...
    99+
    2023-07-02
  • 如何使用Redis的SETNX实现锁机制
    这篇文章给大家分享的是有关如何使用Redis的SETNX实现锁机制的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。setNX,是set if not exists 的缩写,也就是只...
    99+
    2022-10-18
  • spring redis注解如何实现缓存机制
    这篇文章给大家分享的是有关spring redis注解如何实现缓存机制的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。1、xml配置 <bean id="poolC...
    99+
    2022-10-18
  • Apache Dubbo的SPI机制是如何实现的
    目录一、SPI1.1 JDK自带SPI实现 1.2 Dubbo SPI 二、加载-ExtensionLoader 2.1 获取ExtensionLoader的实例 2.2 加载扩展类...
    99+
    2022-11-12
  • jvm JAttach机制如何实现完全解读
    jvm JAttach机制如何实现完全解读,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Attach是什么在讲这个之前,我们先来点大家都知道的东西,当我们感觉线...
    99+
    2023-06-16
  • php如何实现三网手机实名制认证
    这篇文章主要介绍“php如何实现三网手机实名制认证”,在日常操作中,相信很多人在php如何实现三网手机实名制认证问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php如何实现三网手机实名制认证”的疑惑有所帮助!...
    99+
    2023-07-04
  • 如何实现C++中的异常处理机制?
    如何实现C++中的异常处理机制引言:异常处理是编程中非常重要的一部分,它可以提高程序的可靠性和稳定性。在C++中,异常处理机制可以帮助我们处理程序中的错误和异常情况,使得程序的控制流能够在异常发生时进行变更,从而避免程序的崩溃。本文将介绍C...
    99+
    2023-11-02
    异常处理机制 (Exception Handling) C++异常 (C++ Exceptions) 异常处理语句 (E
  • 一文教你如何实现localStorage的过期机制
    目录前言cookie过期机制expires和max-age的区别localStorage 数据过期需求分析:动手实践参考文章总结前言 我们都知道cookie存储的数据是可以添加过期时...
    99+
    2022-11-13
  • 如何解析MySQL线程池内部实现机制
    本篇文章为大家展示了如何解析MySQL线程池内部实现机制,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。摘要在MySQL中,线程池指的是用来管理处理MySQL客户端连...
    99+
    2022-10-19
  • 浅谈java如何实现Redis的LRU缓存机制
    目录LRU概述使用LinkedHashMap实现 使用LinkedHashMap简单方法实现双链表+hashmapLRU概述 最近使用的放在前面,最近没用的放在后面,如果...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作