zoukankan      html  css  js  c++  java
  • CacheManager源码分析

    计算rdd的某个分区是从RDD的iterator()方法开始的,我们从这个方法进入

    然后我们进入getOrCompute()方法中看看是如何进行读取数据或计算的

    getOrElseUpdate()方方法的返回值类型如果是blockResult说明blockManager在本地或远程读取到了数据,或者没有读取到数据调用传入的方法computeOrReadCheckpoint重新计算(或读取checkpoint)得到了数据并成功写入缓存(磁盘或内存);如果返回值类型是iterator,说明没有读取到数据,计算得到的数据内存放不下只能返回iterator;

    我们进入getOrElseUpdate()方法中

    现在我们进入doPutIterator()方法中,看看是如何将计算的数据放入缓存的

    取得取得了info之后,继续向下走

    进行到这里位置数据已经得到了(iterator),然后会new MapStatus并发送给Master来更新状态,最后会判断存储级别是否要去副本,如果设置了_2之类的级别,就会通过

    blockTransferService进行异步发
  • 相关阅读:
    Sky中国War3的旗帜
    2008流行趋势发布暨07届学生毕业秀(上海大学主办)
    随便写一下
    六一节——小朋友们快乐
    HEI
    Update my blog to improve my idea.
    由ipod引起的奇遇记
    加勒比海盗
    “老板娘”请客吃饭
    蚂蚁工坊
  • 原文地址:https://www.cnblogs.com/duodushuduokanbao/p/8795509.html
Copyright © 2011-2022 走看看