`
distantlight1
  • 浏览: 43645 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

spark源码梳理(0)-说明

阅读更多

本系列文章为对Spark主要逻辑源码学习整理。主要参考《Spark技术内幕》一书(简称《内幕》)。《内幕》主要以源码模块为主线进行横向解析。本文则致力于由“事件”触发的纵向逻辑为主线,例如Action算子、Transform算子、集群启动等,这个角度基本Spark运行时的调用栈。各主线直接没有必然的先后联系

 

如无特别说明,本文基于Spark 2.10版本源码,并且仅讨论Standalone部署模式

 

文章内黄底部分表示重要调用栈逻辑,绿底部分表示比较重要但属其他模块逻辑,当前文章不做展开

除源码外,主要内容在注释中说明。包括对源码注释的翻译以及个人说明

 

例如

// cleanedFunc是一个闭包的函数,用到asm来解析class。大致是去掉对闭包无影响的父类、子类、transient属性等,确认闭包可序列化。后续文章再深入分析这个方法。最终getIteratorSize函数传到runJob里

def runJob[T, U: ClassTag]( rdd: RDD[T], func: Iterator[T] => U, partitions: Seq[Int]): Array[U] = {

  val cleanedFunc = clean(func)

  runJob(rdd, (ctx: TaskContext, it: Iterator[T]) => cleanedFunc(it), partitions)

}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics