spark context 源码分析
2020-04-17 13:03:40 23 举报
spark context源码分析图,包括任务的切割,任务分发等
作者其他创作
大纲/内容
TaskSchedulerImpl
reviveOffers
JobSubmitted
将stage中包含的RDD,shuffleDep序列号存放到该字节数组中
createResultStage
TaskRunner:1、反序列化任务为task2、设置task内存管理器
获取分区数,默认根据最后一个RDD的分区数确定
map
Executor
flatMap
序列化任务
textFile
HashSet
runTask
ShuffleMapStageResultStage
TextInputFormat
SparkContext
通过最后一个RDD生成finalStage
获取最佳位置:只有第一次获取源文件或者经过shuffle操作的才需要获取位置,其他的RDD只需要保持在这个stage所处的主机即可通过split获取,同MR一样
tasks
shuffleMapStageresultStage
submitStage
executor
DAGSchedulerEventProcessLoop
DAGScheduler
submitTasks
执行核心代码
reduceByKey
stage
eventQueue:LinkedBlockingDeque
这一步主要是切割rdd生成stage
getMissingParentStages
narrowDep
ArrayStack
missing
Driver
visited()
ShuffleWriter
taskBinaryBytes
taskIdToLocations
submitJob
ShuffleMapTask
通过shuffleManager拿到shuffleWriter
通过反序列化RDD、ShuffleDep
提交TaskRunner任务
visited
submitMissingTasks
partitionsToCompute
ShuffleMapStage:ShuffleMapTaskResultStage:ResultTask
如果是shuffleDep:创建ShuffleMapStage,将stage放到missing中如果是narrowDep:将依赖的RDD压入waitingForVisit栈中,一直到依赖的RDD是shuffleRDD放到missing中
waitingForVisit
launchTasks
shuffleDep
threadPool
0 条评论
下一页