广告
返回顶部
首页 > 资讯 > 后端开发 > Python >checkpoint机制具体实现示例详解
  • 295
分享到

checkpoint机制具体实现示例详解

checkpoint机制实现checkpoint机制 2023-02-07 18:02:32 295人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录checkpoint 机制的具体实现Backnode 节点冷备份checkpoint 的实现checkpoint 机制的具体实现 我们都知道为了优化分布式存储系统中 NameN

checkpoint 机制的具体实现

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

那么我们今天就来学习一下,checkpoint 机制具体应该要怎么实现??

BackNode 节点冷备份

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

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

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

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

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

checkpoint 的实现

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

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

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

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

  • 判断当前系统中的 txid 和上一次 checkpoint 时的是否一致,不一致才继续执行
  • 根据当前系统中的数据生成 FsImage
  • 处理掉旧的 FsImage

具体代码如下:



@Override
public 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/194546.html(转载时请注明来源链接)

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

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

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

下载Word文档
猜你喜欢
  • checkpoint机制具体实现示例详解
    目录checkpoint 机制的具体实现BackNode 节点冷备份checkpoint 的实现checkpoint 机制的具体实现 我们都知道为了优化分布式存储系统中 NameN...
    99+
    2023-02-07
    checkpoint 机制实现 checkpoint 机制
  • 手动实现Redis的LRU缓存机制示例详解
    前言 最近在逛博客的时候看到了有关Redis方面的面试题,其中提到了Redis在内存达到最大限制的时候会使用LRU等淘汰机制,然后找了这方面的一些资料与大家分享一下。 LRU总体大概...
    99+
    2022-11-11
  • Python绘制3D立体花朵示例详解
    目录动态展示导读源码和详解荷花玫瑰花桃花月季动态展示 这是一个动态图哦 导读 兄弟们可以收藏一下哦!情人节可以送出去,肥学找了几朵python写的花给封装好送给大家。不是多炫酷但是...
    99+
    2022-11-12
  • Flutter 绘制风车实现示例详解
    目录前言展示1. 风车 1 的绘制2. 风车 2 的绘制3. 旋转动画的处理4. 旋转动画的圈数前言展示 最近源码看得比较多,本文来画点东西调节下心情,本绘制已收录于 Flutter...
    99+
    2022-11-13
    Flutter 绘制风车 Flutter 绘制
  • Golang实现Json转结构体的示例详解
    解决实际需求,案例分享。 1.请求Zabbix API,通过itemid获取到AppName(应用集名称) package main import (  "encoding/jso...
    99+
    2023-02-19
    Golang Json转结构体 Golang Json 结构体
  • OpenCV实现相机标定示例详解
    目录环境准备相机标定棋盘格图片实时显示相机的画面在线标定实时显示相机画面,按键保存能检测到角点的棋盘格图片离线标定畸变矫正环境准备 vs2015+opencv4.10安装与配置 相机...
    99+
    2022-11-12
  • Python实现强制复制粘贴的示例详解
    目录前因后果流程思路代码展示效果展示前因后果 公司有人阳了,今天在家上班,突然小姨子就问我有没有baidu文库会员,想下载点东西,我心想这还要会员?用Python不是分分钟的事情! ...
    99+
    2022-12-19
    Python强制复制粘贴 Python 复制粘贴
  • Python+pyaudio实现音频控制示例详解
    简介 PyAudio是一个跨平台的音频处理工具包,使用该工具包可以在Python程序中播放和录制音频,也可以产生wav文件等 安装 pip install PyAudio 注意:使用...
    99+
    2022-11-11
  • Django实现视频播放的具体示例
    view视图 import re import os import mimetypes from wsgiref.util import FileWrapper from djang...
    99+
    2022-11-11
  • C++ OpenCV实现物体尺寸测量示例详解
    目录前言一、图像透视矫正二、物体定位三、尺寸测量四、效果显示五、源码总结前言 本文将使用OpenCV C++ 进行物体尺寸测量。具体来说就是先定位到待测物体的位置,然后测量物体的宽高...
    99+
    2022-11-12
  • Java中的反射机制示例详解
    目录反射什么是Class类获取Class实例的三种方式通过反射创建类对象通过反射获取类属性、方法、构造器更改访问权限和实例赋值运用场景反射 反射就是把Java类中的各个成分映射成一个...
    99+
    2022-11-13
  • uniapp自定义相机实现示例详解
    目录自定义相机起因利用livePusher实现使用效果图拓展实现多种自定义相机水印相机身份证相机人像相机自定义相机 起因 由于最近用uniapp调用原生相机容易出现闪退问题,找了很...
    99+
    2023-03-09
    uniapp自定义相机 uniapp 相机实现
  • Python实现甘特图绘制的示例详解
    目录前期准备页面的结构代码部分主页面的开发-Section 1主页页面的开发-Section 2相信大家在平常实际工作当中,需要对整体的项目做一个梳理,这时如果有一个网页应用能够对整...
    99+
    2023-05-15
    Python绘制甘特图 Python甘特图
  • Vue超详细讲解重试机制示例
    重试指的是当加载出错时,有能力重新发起加载组件的请求。 异步组件加载失败后的重试机制,与请求服务端接口失败后的重试机制一样。所以,先来讨论接口请求失败后的重试机制是如何实现的, 为此...
    99+
    2023-01-05
    Vue重试机制 Vue重试
  • Java垃圾回收机制的示例详解
    目录一、概述二、对象已死?1.引用计数算法2.可达性分析算法3.四种引用4.生存还是死亡?5.回收方法区三、垃圾收集算法1.分代收集理论2.名词解释3.标记-清除算法4.标记-复制算...
    99+
    2022-11-13
  • Android IPC机制Messenger实例详解
    Android IPC机制Messenger实例详解前言:Messenger可以翻译成信使,通过它可以在不同进程间传递Message对象有了它就可以轻松实现进程间的数据传递了。Messenger使用的方法相对AIDL比较简单,它对AIDL做...
    99+
    2023-05-30
    android ipc机制 messenger
  • java回调机制实例详解
    java回调机制实例详解以前不理解什么叫回调,天天听人家说加一个回调方法啥的,心里想我草,什么叫回调方法啊?然后自己就在网上找啊找啊找,找了很多也不是很明白,现在知道了,所谓回调:就是A类中调用B类中的某个方法C,然后B类中反过来调用A类中...
    99+
    2023-05-31
    java 回调机制 ava
  • C#实现获取机器码的示例详解
    目录实践过程效果代码实践过程 效果 代码 public partial class Form1 : Form { public Form1() { ...
    99+
    2022-12-30
    C#获取机器码 C# 机器码
  • Python+matplotlib实现绘制等高线图示例详解
    目录前言1. 等高线图概述什么是等高线图?等高线图常用场景绘制等高线图步骤案例展示2. 等高线图属性设置等高线颜色设置等高线透明度设置等高线颜色级别设置等高线宽度设置等高线样式3. ...
    99+
    2022-11-12
  • 实例解析PHP定时器的具体实现
    目录前言原因危险的做法正确的姿势CLI模式总结前言 常见的定时器有两种:一种周期性定时执行,例如每天的凌晨三点出报表;另一种在指定时间后执行(一次),例如会员登录系统五分钟后发放每日...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作