`

spark内核揭秘-09-RDD的count操作 触发Job全生命周期-02

阅读更多

接着上一篇文章继续分析代码:

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-rdd-APi

    标题:“Spark RDD API”说明了本文档将专注于Apache Spark中弹性分布式数据集(RDD)的API。RDD是Spark的核心概念,它是一个容错的、并行的数据结构,使得用户能够处理大数据集。本文档将基于Scala语言中的RDD实现...

    spark-3.1.2.tgz & spark-3.1.2-bin-hadoop2.7.tgz.rar

    - RDD(弹性分布式数据集):Spark的基础数据结构,是不可变、分区的数据集合,可以在集群中并行操作。 - DataFrame:Spark SQL引入的数据模型,它是基于表和列的抽象,提供了更高级别的抽象和优化。 - Dataset:...

    spark-3.1.3-bin-without-hadoop.tgz

    Spark Streaming则构建在RDD之上,通过微批处理实现对实时数据流的处理,支持复杂的窗口操作和状态管理。这对于实时监控、在线分析等应用场景非常有用。 MLlib是Spark的机器学习库,包含了多种算法如分类、回归、...

    spark-assembly-1.5.2-hadoop2.6.0.jar

    《Spark编程核心组件:spark-assembly-1.5.2-hadoop2.6.0.jar详解》 在大数据处理领域,Spark以其高效、易用和灵活性脱颖而出,成为了许多开发者的首选框架。Spark-assembly-1.5.2-hadoop2.6.0.jar是Spark中的一个...

    spark-1.6.0-bin-hadoop2.6.tgz

    转换创建新的RDD,而动作触发实际的计算并可能返回结果到驱动程序或存储数据。 **2. Spark组件** - **Spark Core**:Spark的基础架构,提供了任务调度、内存管理、错误恢复和网络通信等功能。 - **Spark SQL**:...

    spark-3.1.3-bin-hadoop3.2.tgz

    此外,Spark 还提供了SQL查询支持(通过Spark SQL),流处理(Spark Streaming),机器学习库(MLlib)以及图形处理(GraphX)等功能,使其成为全方位的大数据处理平台。 在Spark 3.1.3中,可能包含以下关键改进和...

    Spark学习--RDD编码

    (2) 行动操作,RDD的行动操作则是向驱动器程序返回结果或把结果写入外部系统的操作,会触发实际的计算,比如count()和first()。 惰性求值:RDD的转化操作是惰性求值的,即在被调用行动操作之前Spark不会开始计算,...

    spark-2.2.2-bin-hadoop2.7.tgz

    在Spark 2.2.2中,除了基本的RDD接口,还引入了DataFrame和Dataset,它们提供了一种更高级的、类型安全的数据处理方式,使得开发人员能够更方便地进行SQL查询和复杂的数据分析。 Spark 2.2.2支持多种数据源,包括...

    spark-3.2.4-bin-hadoop3.2-scala2.13 安装包

    1. **Spark**: Spark的核心在于它的弹性分布式数据集(RDD),这是一个容错的内存计算模型。它提供了一组高级APIs,支持批处理、交互式查询(Spark SQL)、实时流处理(Spark Streaming)和机器学习(MLlib)等多种...

    spark-2.4.7-bin-hadoop2.6.tgz

    1. **弹性分布式数据集(RDD)**:RDD是Spark的基本数据抽象,它是不可变、分区的记录集合,可以在集群中并行操作。RDD提供了高效的转换(transformations)和动作(actions)操作。 2. **内存计算**:Spark通过将...

    spark-3.1.2-bin-hadoop3.2.tgz

    2. **Resilient Distributed Datasets (RDD)**:RDD是Spark的基本数据结构,它是不可变、分区的元素集合,能够在集群中的节点上分布式存储。 3. **弹性**:Spark提供了容错机制,当工作节点失败时,可以自动恢复丢失...

    spark-assembly-1.5.2-hadoop2.6.0jar包

    Spark-assembly-1.5.2-hadoop2.6.0.jar是Apache Spark的一个关键组件,主要用于在Scala环境中开发Spark应用程序。这个特定的版本(1.5.2)与Hadoop 2.6.0兼容,这意味着它可以无缝地运行在支持Hadoop 2.6.0的集群上...

    spark-2.1.1-bin-hadoop2.7.tgz.7z

    Spark是Apache软件基金会下的一个开源大数据处理框架,它以其高效、灵活和易用性而闻名。Spark 2.1.1是该框架的一个稳定版本,它在2.1.0的基础上进行了一些改进和修复,提供了更好的性能和稳定性。这个特定的压缩包...

    spark-1.6.0-bin-hadoop2.4.tgz

    此外,Spark的弹性分布式数据集(Resilient Distributed Datasets, RDD)是其核心概念,它提供了一种在内存中处理数据的方式,大大提升了计算效率。Spark 1.6.0还引入了DataFrame,进一步优化了数据处理性能,简化了...

    spark-2.3.0-bin-hadoop2.7版本.zip

    用户可以通过并行操作对RDD进行计算,且RDD之间的转换都是延迟执行的,直到需要结果时才真正计算,这种机制称为惰性计算。 2. **内存计算**:Spark的一大优势在于其内存计算模型,它将数据缓存在内存中,减少了磁盘...

    spark-2.4.4-bin-hadoop2.6.tgz

    转换创建新的RDD,而动作触发计算并可能返回结果到驱动程序或写入外部存储。 2. **Spark组件**: - **Spark Core**:基础执行引擎,负责任务调度、内存管理、故障恢复等。 - **Spark SQL**:提供SQL和DataFrame/...

    spark-2.4.0-bin-hadoop2.6.tgz

    1. **Spark核心概念**:Spark的核心组件是弹性分布式数据集(Resilient Distributed Datasets, RDD),这是一种容错的、不可变的数据集合,可以在集群中的多个节点上并行操作。此外,Spark还提供了DataFrame和...

    spark-2.4.0-bin-without-hadoop.tgz

    在 Spark 2.4.0 版本中,RDD 已经相当成熟,提供了丰富的操作接口,如转换(transformations)和行动(actions)。 Spark SQL 是 Spark 处理结构化数据的重要组件,它允许用户通过 SQL 或者 DataFrame/Dataset API ...

    spark-2.4.6-bin-2.6.0-cdh5.7.0.tgz

    RDD操作可以是转换(transformations),如map和filter,或者行动(actions),如count和saveAsTextFile。转换创建新的RDD,而行动会触发计算并返回结果到驱动程序或保存到外部存储。 在测试和个人使用环境中,...

Global site tag (gtag.js) - Google Analytics