前景: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的数据

 

二:图

CacheManager原理剖析

相关文章:

  • 2021-08-08
  • 2021-05-07
  • 2021-05-11
  • 2021-05-23
  • 2022-01-05
  • 2021-07-30
  • 2021-12-09
  • 2022-01-12
猜你喜欢
  • 2021-06-22
  • 2022-12-23
  • 2021-09-16
  • 2021-10-25
  • 2021-05-27
  • 2021-07-24
  • 2021-05-19
相关资源
相似解决方案