CacheManager运行原理流程

第40课: CacheManager彻底解密:CacheManager运行原理流程图和源码详解 第40课:  CacheManager彻底解密:CacheManager运行原理流程图和源码详解CacheManager管理是缓存,而缓存可以是基于内存的缓存,也可以是基于磁盘的缓存。CacheManager需要通过BlockManager来操作数据。         Task发生计算的时候要调用RDD的compute进行计算。我们看一下MapPartitionsRDD的compute方法:Map 阅读详情

这里写图片描述
一:CacheManager分析:

1,CacheManager管理的是缓存,而缓存可以是基于内存的缓存,也可以是基于磁盘的缓存;

2,CacheManager需要通过BlockManager来操作数据;

3.当Task运行的时候会调用RDD的compute方法进行计算,而compute方法会调用iterator方法:

/**
 * Internal method to this RDD; will read from cache if applicable, or otherwise compute it.
 * This should ''not'' be called by users directly, but is available for implementors of custom
 * subclasses of RDD.
 */
final def iterator(split: Partition, context: TaskContext): Iterator[T] = {
  if (storageLevel != StorageLevel.NONE) {
    SparkEnv.get.cacheManager.getOrCompute(this, split, context, storageLevel)
  } else {
    computeOrReadCheckpoint(split, context)
  }
}

二:CacheManager源码详解

1,Cache在工作的时候会最大化的保留数据,但是数据不一定绝对完整,因为当前的计算如果需要内存空间的话,那么Cache在内存中的数据必须让出空间,此时如何在RDD持久化的时候同时指定了可以把数据放在Disk上,那么部分Cache的数据就可以从内存转入磁盘,否则的话,数据就会丢失!!!

2,具体CacheManager在获得缓存数据的时候会通过BlockManager来抓到数据;

/**
 * Get a block from the block manager (either local or remote).
 */
def get(blockId: BlockId): Option[BlockResult] = {
  val local = getLocal(blockId)
  if (local.isDefined) {
    logInfo(s"Found block $blockId locally")
    return local
  }
  val remote = getRemote(blockId)
  if (remote.isDefined) {
    logInfo(s"Found block $blockId remotely")
    return remote
  }
  None
}

3,如果CacheManager没有通过BlockManager获得缓存内容的话,此时会通过RDD的如下方法来获得数据:

val computedValues = rdd.computeOrReadCheckpoint(partition, context)

上述方法首先会查看当前的RDD是否进行了CheckPoint,如果进行了的话就直接读取CheckPoint的数据,否则的话就必须进行计算;计算之后通过putInBlockManager会把数据按照StorageLevel重新缓存起来;

4,计算之后通过putInBlockManager会把数据按照StorageLevel重新缓存的时候如果需要放在内存中

CACHE的实现 VHDL实现cache 立即下载

相关推荐

从《视觉SLAM十四讲》到项目实战:一文读懂拓扑地图与语义地图为何是服务机器人的未来

本文探讨了服务机器人地图技术的演进,从传统几何地图到拓扑地图与语义地图的跨越。通过分析栅格地图的局限性和拓扑地图、语义地图的优势,揭示了它们在动态开放环境中的智能应用。文章还介绍了多模态语义融合架构和动态语义更新技术,为服务机器人的未来发展提供了技术路线图。

weixin_30292843的博客 478

CacheManager运行原理流程图和源码详解

一:CacheManager分析:1,CacheManager管理的是缓存,而缓存可以是基于内存的缓存,也可以是基于磁盘的缓存;2,CacheManager需要通过BlockManager来操作数据;3.当Task运行的时候会调用RDD的compute方法进行计算,而compute方法会调用iterator方法:/** * Internal method to this RDD; will rea

sundujing的博客 1788

Ansys Lumerical | 薄膜铌酸锂电光调制器的仿真与优化

本文详细介绍了使用Ansys Lumerical进行薄膜铌酸锂电光调制器仿真与优化的全流程。从基础原理到电学仿真、光学模拟技巧,再到设计优化实战经验,帮助工程师掌握这一先进光电器件的仿真方法。重点解析了薄膜铌酸锂的Pockels效应和Mach-Zehnder结构设计,并提供了常见问题排查指南和最新发展动态。

vulkan6gpu的博客 1196

Springboot项目启动报错CacheManager初始化失败

排查了好久才想起来,我是重新改造的项目,项目目录结构全都改变了,目录结构如下: 每个项目都是按照项目名称分的层级,所以ebda-common目录和其他项目目录层级不一样 ebda-common 其他项目 多了一层demo文件夹,springboot项目默认扫描启动类所在路径下所有的bean,所以需要在启动类加上一个扫描配置 @ComponentScan(basePackages = {"com.ebda.**"}) 重启,正常启动了。 ...

smile__k的博客 2584

用Python写个彩票小助手:自动生成双色球/大乐透号码并保存到桌面

本文介绍如何使用Python开发一个智能彩票助手,实现双色球和大乐透号码的随机生成与桌面文件保存功能。通过详细的代码示例,包括随机号码生成、文件操作、用户交互和错误处理,帮助Python初学者快速掌握实用工具开发技巧。

weixin_42566121的博客 515

AD20丝印层导入图片logo保姆级教程(附黑白预览避坑技巧)

本文提供了一份详尽的AD20丝印层导入图片Logo的实战指南。核心在于将图片预处理为高质量的单色BMP位图,并独家分享了利用Windows画图工具进行“黑白预览”的关键技巧,以提前规避转换失真。教程涵盖了从脚本获取、图片处理、参数设置到生产规范的完整流程,帮助硬件工程师高效、准确地在PCB的Top Overlay层添加个性化标识。

weixin_29194255的博客 385

CacheManager 开源项目使用教程

CacheManager 是一个用于 .NET 的多级缓存管理库,提供了对多种缓存后端的支持。项目的目录结构如下: ``` CacheManager/ ├── src/ │ ├── CacheManager.Core/ │ ├── CacheManager.Serialization.Json/ │ ├── CacheManager.SystemRuntimeCaching/ │

gitblog_00010的博客 583

SAP Business One自定义表与字段实战:从零构建企业专属数据模型

本文详细介绍了如何在SAP Business One中创建自定义表与字段,从零构建企业专属数据模型。通过实战案例和避坑指南,帮助用户掌握业务适配、流程优化和权限隔离等关键技巧,提升系统灵活性和数据管理效率。特别适合需要扩展标准功能的SAP Business One用户。

weixin_28730927的博客 359

CacheManager彻底解密:CacheManager运行原理流程图和源码详解

主题  CacheManager 运行原理图 CacheManager 源码解析   CacheManager 运行原理图 [下图是CacheManager的运行原理图] 首先 RDD 是通过 iterator 来进行计算: CacheManager 会通过 BlockManager 从 Local 或者 Remote 获取数据直接通过 RDD 的 compute 进行计算,有可能...

无 7358

【即插即用模块】Mamba篇 | CVPR 2025 | MaIR:新型Mamba扫描方式+通道混洗注意力,全任务涨点!

MaIR是一种新型图像恢复模型,通过嵌套S形扫描策略(NSS)和序列混洗注意力(SSA)改进传统Mamba方法。NSS采用条纹区域划分和S形扫描路径,既保留图像局部性又维持空间连续性;SSA通过通道洗牌和门控机制增强特征聚合。该模块创新性地融合多路径选择性扫描、深度卷积和注意力机制,在保持O(N)计算复杂度的同时,显著提升超分辨率和去噪等任务的性能表现(PSNR提升0.2-0.5dB)。代码实现包含特征洗牌、组卷积等关键操作,适用于高分辨率视觉任务,可作为即插即用组件替代传统自注意力模块。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 1162

使用ChatGPT工具阅读文献的实战教程

本文介绍核心内容为使用ChatGPT工具阅读文献,希望对学习和使用ChatGPT的同学们有所帮助。为了兼顾质量和速度,本专栏的更新频率为一周一到两更。 文章目录 1. 前言 2. 实战教程 2.1 下载工具并登录 2.2 提取文献中的关键信息

herosunly的博客 15万+

[Spark内核] 第40课:CacheManager彻底解密:CacheManager运行原理流程图和源码详解

本课主题 CacheManager 运行原理图 CacheManager 源码解析 CacheManager 运行原理图 [下图是CacheManager的运行原理图] 首先 RDD 是通过 iterator 来进行计算: CacheManager 会通过 BlockManager 从 Local 或者 Remote 获取数据直接通过 RDD 的 compute...

weixin_30402343的博客 164

OceanBase备租户创建(二):通过BACKUP DATABASE PLUS ARCHIVELOG

OceanBase数据库备租户创建方法二:通过BACKUP DATABASE PLUS ARCHIVELOG功能实现,特别适用于社区版和单机版部署模式。

Sebastien23的博客 539

springBoot高级——与缓存相关

一、两张图理解缓存中的成员部分: 二、几个重要概念&缓存注解 Cache : 缓存接口,定义缓存操作。实现有:RedisCache、EhCacheCache、ConcurrentMapCache等 CacheManager : 缓存管理器,管理各种缓存(Cache)组件 @Cacheable : 主要针对方法配置,能够根据方法的请求参数对其结果...

Angus 320

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

springboot缓存运行原理

spring boot缓存原理

tttt155656的博客 258

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

springboot与缓存—使用、原理、整合redis

      Java缓存接口标准JSR-107:Java Caching定义了5个核心接口,分别是CachingProvider(缓存提供者), CacheManager(缓存管理器), Cache(缓存组件), Entry (key-value对)和Expiry(条目有效期),他们的关系如下图所示。但是该缓存规范,整合难度较大。Spring从3.1开始定义了org.springframework...

weixin_38364973的博客 3750

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

SpringBoot自学好几天 中途开始写笔记 SpringBoot与缓存 JRS-107 SpringBoot缓存抽象 整合Redis 20190226

接上一篇 四、@Cacheable 运行流程 续集 1. 自动配置类:CacheAutoConfiguration 2. CacheAutoConfiguration.CacheConfigurationImportSelector.class 返回内容如下 缓存配置类: 0 = "org.springframework.boot.autoconfigure.cache.GenericCache...

qq_36291682的博客 3799

springboot整个缓存_SpringBoot整合缓存笔记

1 packagecom.amao.springboot.service;234 importcom.amao.springboot.domain.Employee;5 importcom.amao.springboot.mapper.EmployeeMapper;6 importorg.springframework.beans.factory.annotation.Autowired;7 im...

weixin_39778400的博客 124

八、SpringBoot与缓存

缓存一、JSR107简介1、5个核心接口2、JSR107架构图3、JSR107引入jar包二、Spring缓存抽象 一、JSR107简介 1、5个核心接口 CachingProvider:定义了创建、配置、获取、管理和控制多个CacheManager。一个应用可以在运che行期间访问多个CachingProvider; CacheManager:定义了创建、配置、获取、管理和控制多个唯一命名的Cache,这些Cache存在于CacheManager的上下文中。一个CacheManager仅被一个Cachi

qq_19768387的博客 1003

springboot整个缓存_springboot整合缓存

@CacheConfig(cacheNames="emp"/*,cacheManager = "employeeCacheManager"*/) //抽取缓存的公共配置@Servicepublic classEmployeeService {@AutowiredEmployeeMapper employeeMapper;/*** 将方法的运行结果进行缓存;以后再要相同的数据,直接从缓存中获取,不用...

weixin_36356040的博客 486

springboot得缓存cachEvict

作者:姜丙政 先给大家总结一下:这个value一定要注意他就相当于是一个容器所有得增删改查都是在一个容器中进行得所以value要一致、 @CacheConfig(cacheNames="emp"/*,cacheManager = "employeeCacheManager"*/) //抽取缓存的公共配置直接加载类上以后单个方法变不用在加上value 查询:value = {"emp"}根据i...

Jzq0006的博客 801

SpringBoot和缓存

Cache缓存快速使用: 启动类: package com.atguigu.cache; import org.apache.ibatis.annotations.Mapper; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplic

Memorial*的博客 204

SpringBoot:缓存 + 搭建Redis缓存环境

SpringBoot搭建Redis缓存 注解版的 mybatis @CacheConfig @Cacheable @CachePut:既调用方法,又更新缓存数据;同步更新缓存 @CacheEvict:缓存清除 @Caching:定义复杂的缓存规则 CacheManager管理多个Cache组件的,对缓存的真正CRUD操作在Cache组件中,每一个缓存组件有自己唯一一个名字; 搭建Redis缓存环境及测试 RedisTemplate 自定义CacheManager

ChinaDragon10的博客 1591

SpringBoot缓存

SpringBoot缓存 SpringBoot**默认使用的是**ConcurrentMapCache作缓存(由ConcurrentMapCacheManager创建),ConcurrentMapCache是将数据存储在ConcurrentMap 一、使用IDEA创建一个SpringBoot项目 创建的Springboot版本是1.5.15.RELEASE 二、项目开发 使用...

hsg_happyLearning的博客 594

Spark2.0 源码解析系列目录

Spark2.0 源码解析系列SparkContext源码分析 Master源码分析 Worker源码分析 Job源码恩熙 DAGScheduler源码分析 TaskScheduler源码分析 Executor源码分析 Task源码分析 Shuffle源码分析 BlockManager源码分析 CacheManager源码分析 Checkpoint源码分析

coderlaw's study 2616
上一篇: BlockManager初始化和注册解密、BlockManagerMaster工作解密、BlockTransferService解密、本地数据读写解密、远程数据读写解密
下一篇: CheckPoint运行原理
囧芝麻
博客等级 码龄10年 10粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值