CacheManager原理剖析

前景:Task ——》 RDD(iterator方法) ——》计算当前Task要计算出来的那个partition

情景1:
该RDD是持久化过的:那么StorageLevel肯定不是NONE,则会使用CacheManager去帮助我们直接读取持久化过的数据
    情景1.1:BlockManager,先尝试从本地读取(getLocal),或从远程获取(getRemote)
    情景1.2:因为服务器故障灯原因导致数据丢失时,会尝试读取之前checkpoint过的数据,如果依然没有读取,就回重新计算一份之后,使用BlockManager持久化一次。
            情景1.2.1:如果持久化级别没有指定内存级别,直接用BlockManager的doPut()写入磁盘中
            情景1.2.2:如果指定了内存级别,那么优先保存到内存中,会调用MemoryStore的unrollSafely()方法,尝试安全的将数据保存到内存中,如果内存不够,则调用ensureFreeSpace()方法,整理内存之后,在写入内存
情景2:
该RDD没进行持久化,就会从RDD的父RDD来执行我们定义的算子来计算新的RDD的partition的数据

 

二:图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值