spark内核揭秘-09-RDD的count操作 触发Job全生命周期-02
来源:互联网 发布:明星语音模拟软件 编辑:程序博客网 时间:2024/06/05 21:55
接着上一篇文章继续分析代码:
3.1.3.3.3.1、进入TaskSet 方法:
3.1.3.3.3.2、进入taskScheduler.submitTasks(new TaskSet(tasks.toArray, stage.id, stage.newAttemptId(), stage.jobId, properties)) 方法:
从源代码中可以看出DAGScheduler中向TaskScheduler以Stage为单位提交任务,Stage是以TaskSet为单位的,构建一个TaskSetManager,当isLocal=false(集群模式)& hasReceivedTask=false(没启动的),将会创建一个定时任务来监控worker集群是否启动,并且是15000毫秒后启动,并间隔15000毫秒继续循环运行
3.1.3.3.3.3、进入 backend.reviveOffers() 方法:
该方法是 CoarseGrainedSchedulerBackend的方法,此时会向driverActor发送ReviveOffers消息,driverActor的实现代码如下:
此时跟踪进DriverActor的实现中:
可以看到ReviveOffers消息的具体实现是makeOffers方法:
WorkerOffer对象代表是某个Executor上可用的资源,freeCores(id)是该executor上空余的CPU数目:
进入launchTasks:
executorActor发送启动Task的请求,其实是向CoarseGrainedExecutorBackend发送LaunchTask消息:
在LaunchTask消息中会导致executor.lauchTask(this, taskDesc.taskId, taskDesc.name, taskDesc.serializedTask)的调用:
其中的TaskRunner封装了任务本身:
任务执行的是交给了线程池去执行的。 其实这些代码已经分析过了,在之前的博客中
我们在回到SparkContext:
4、进入progressBar.foreach(_.finishAll())方法:
5、进入rdd.doCheckpoint()方法
进入checkpointData.get.doCheckpoint()方法:
- spark内核揭秘-09-RDD的count操作 触发Job全生命周期-02
- spark内核揭秘-09-RDD的count操作 触发Job全生命周期-01
- spark内核揭秘-10-RDD源码分析
- spark中job的逻辑计划--RDD
- spark RDD action job的提交过程
- Spark内核:RDD的算子
- Spark RDD揭秘
- Spark的RDD简单操作
- Spark Streaming源码解读之RDD生成全生命周期详解
- 3.4 Spark RDD Action操作1-first、count、lookup、collect
- spark内核揭秘-02-spark集群概览
- spark RDD action job的提交过程之 taskSchedule
- Spark内核:RDD基础
- spark RDD算子(九)之基本的Action操作 first, take, collect, count, countByValue, reduce, aggregate, fold,top
- 学习spark:二、RDD的Transformations操作
- 学习spark:三、RDD的action操作
- spark中对rdd的几个操作
- spark-shell基本的RDD操作
- android绘制图形:android.graphics.drawable.shapes
- iMac使用点滴(不断更新中)
- iOS 中的CALayer
- Jetty和Tomcat的使用及性能测试
- Oracle CASE WHEN 用法介绍
- spark内核揭秘-09-RDD的count操作 触发Job全生命周期-02
- Kafka学习笔记
- jackson中自定义处理序列化和反序列化
- BZOJ系列3856《Monster》题解
- oracle(oracle的函数)
- C语言去除空格方法
- java线程系列
- 安卓 imageview资源图片ID获取方法
- SQLServer中的全局变量