`

spark内核揭秘-06-TaskSceduler启动源码解析初体验

阅读更多

TaskScheduler实例对象启动源代码如下所示:

从上面代码可以看出来,taskScheduler的启动是在SparkContext

找到TaskSchedulerImpl实现类中的start方法实现:

1、从上代码看到,先启动CoarseGrainedSchedulerBackend,

从上面CoarseGrainedSchedulerBackend类的代码,可以看出spark启动了DriverActor,名称为CoarseGrainedScheduler,这是一个akka消息通信类,会先运行preStart()方法

从上面代码可以看到,初始化了akka客户端监听,还有最重要的是调用了系统的scheduler调度,参数函数是立即执行调度,间隔1000毫秒,运行ReviveOffers方法

进入makeOffers()方法:

运行launchTask方法:



这段代码是spark序列号任务大小超过akkaFrameSize - AkkaUtils.reservedSizeBytes大小,那就报错为”Serialized task %s:%d was %d bytes, which exceeds max allowed: " +
                "spark.akka.frameSize (%d bytes) - reserved (%d bytes). Consider increasing " +
                "spark.akka.frameSize or using broadcast variables for large values.
“ ,此刻会将该任务终止,并将任务从任务列表中移除,这样推荐使用broadcast广播方式

否则,将获取执行任务数据,并减少空闲cpu数,发送消息执行 LaunchTask(new SerializableBuffer(serializedTask))方法,即CoarsedGrainedExecutorBackend类的LaunchTask方法:

上面代码 会运行executor 的launchTask方法:

TaskRunner就是一个多线程:

代码太多,我就不截图了,其实实际就是根据机器状况,运行task任务

2、然后我们回到TaskSchedulerImpl实现类中的start方法

如果isLocal=false and spark.speculation=true,不是local模式,那就要dispatcher分发任务了,默认是100毫秒后立即启动,并间隔100毫秒循环运行,

CoarseGrainedSchedulerBackend的reviveOffers:

0
4
分享到:
评论

相关推荐

    spark-3.1.3-bin-without-hadoop.tgz

    这个"spark-3.1.3-bin-without-hadoop.tgz"压缩包是Spark的3.1.3版本,不含Hadoop依赖的二进制发行版。这意味着在部署时,你需要自行配置Hadoop环境,或者在不依赖Hadoop的环境中运行Spark。 Spark的核心特性包括...

    spark-2.1.0-bin-without-hadoop版本的压缩包,直接下载到本地解压后即可使用

    在Ubuntu里安装spark,spark-2.1.0-bin-without-hadoop该版本直接下载到本地后解压即可使用。 Apache Spark 是一种用于大数据工作负载的分布式开源处理系统。它使用内存中缓存和优化的查询执行方式,可针对任何规模...

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

    Spark-3.1.2.tgz和Spark-3.1.2-bin-hadoop2.7.tgz是两个不同格式的Spark发行版,分别以tar.gz和rar压缩格式提供。 1. Spark核心概念: - RDD(弹性分布式数据集):Spark的基础数据结构,是不可变、分区的数据集合...

    编译的spark-hive_2.11-2.3.0和 spark-hive-thriftserver_2.11-2.3.0.jar

    spark-hive_2.11-2.3.0 spark-hive-thriftserver_2.11-2.3.0.jar log4j-2.15.0.jar slf4j-api-1.7.7.jar slf4j-log4j12-1.7.25.jar curator-client-2.4.0.jar curator-framework-2.4.0.jar curator-recipes-2.4.0....

    spark-3.1.3-bin-hadoop3.2.tgz

    在解压并安装"spark-3.1.3-bin-hadoop3.2.tgz"后,你需要配置环境变量,如SPARK_HOME,然后可以通过启动Master和Worker节点来建立Spark集群。对于单机测试,可以使用本地模式。使用Spark时,你可以编写Python、Scala...

    spark-1.6.0-bin-hadoop2.6.tgz

    在命令行中输入 `bin/spark-shell` 即可启动Scala Shell,或者使用 `bin/pyspark` 启动Python Shell。 **5. Spark应用程序开发** Spark支持多种编程语言,包括Scala、Java、Python和R。开发者可以根据需求选择合适...

    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-2.0.0-bin-hadoop2.6.tgz

    本资源是spark-2.0.0-bin-hadoop2.6.tgz百度网盘资源下载,本资源是spark-2.0.0-bin-hadoop2.6.tgz百度网盘资源下载

    spark-2.4.7-bin-hadoop2.6.tgz

    - `bin/`:包含可执行文件,如`spark-submit`,`pyspark`,`spark-shell`等,用于启动和管理Spark作业。 - `conf/`:存放配置文件,如`spark-defaults.conf`,用户可以在此自定义Spark的默认配置。 - `jars/`:包含...

    spark-3.2.1-bin-hadoop2.7.tgz

    这个名为"spark-3.2.1-bin-hadoop2.7.tgz"的压缩包是Spark的一个特定版本,即3.2.1,与Hadoop 2.7版本兼容。在Linux环境下,这样的打包方式方便用户下载、安装和运行Spark。 Spark的核心设计理念是快速数据处理,...

    apache-doris-spark-connector-2.3_2.11-1.0.1

    Spark Doris Connector(apache-doris-spark-connector-2.3_2.11-1.0.1-incubating-src.tar.gz) Spark Doris Connector Version:1.0.1 Spark Version:2.x Scala Version:2.11 Apache Doris是一个现代MPP分析...

    spark-3.1.2-bin-hadoop3.2.tgz

    6. 使用`spark-shell`或`pyspark`启动交互式环境,开始编写和执行Spark程序。 **Spark的主要组件** 1. **Spark Core**:Spark的基础框架,提供了分布式任务调度和基本的数据存储。 2. **Spark SQL**:用于结构化...

    spark-3.2.0-bin-hadoop3-without-hive

    本压缩包“spark-3.2.0-bin-hadoop3-without-hive”则特别针对不包含 Hive 支持的环境进行打包,更专注于基础的 Spark 与 Hadoop 3 的集成。 首先,让我们深入了解 Spark 3.2.0 的主要改进。这一版本引入了新的 SQL...

    spark-3.2.0-bin-hadoop3.2.tgz

    Spark是Apache软件基金会下的一个开源大数据处理框架,其主要特点是高效、通用、易用和可扩展。...解压"spark-3.2.0-bin-hadoop3.2.tgz"后,用户可以直接在Hadoop 3.2环境下运行Spark,享受其带来的高性能计算体验。

    spark-3.0.0-bin-hadoop3.2

    在本场景中,我们讨论的是Spark的3.0.0版本,与Hadoop3.2相结合的二进制发行版——"spark-3.0.0-bin-hadoop3.2"。这个压缩包是为了在Windows操作系统下运行Spark而设计的,因此标签明确指出它是适用于Windows平台的...

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

    5. **运行Spark**: Spark可以通过命令行工具启动,例如`spark-shell`(交互式Spark会话)或`pyspark`(Python版本的交互式会话)。对于应用程序开发,可以使用Scala、Java、Python或R编写代码,然后通过`spark-...

    spark-3.0.0-bin-hadoop2.7.tgz

    Spark-3.0.0-bin-hadoop2.7.tgz 是Spark 3.0.0版本的预编译二进制包,其中包含了针对Hadoop 2.7版本的兼容性构建。这个版本的发布对于数据科学家和大数据工程师来说至关重要,因为它提供了许多性能优化和新功能。 1...

    spark-hive-thriftserver_2.11-2.1.3-SNAPSHOT-123456.jar

    spark-hive-thriftserver_2.11-2.1.spark-hive-thrift

    spark-2.4.0-bin-hadoop2.7.tgz

    然后,你可以通过`spark-submit`命令提交Spark作业到集群,或者使用`pyspark`或`spark-shell`启动交互式环境。 在实际应用中,Spark常被用于大数据分析、实时数据处理、机器学习模型训练和图数据分析。由于其内存...

    spark-2.3.4-bin-hadoop2.7.tgz

    在本案例中,我们关注的是Spark的2.3.4版本,它预编译为与Hadoop 2.7兼容的版本,打包成"spark-2.3.4-bin-hadoop2.7.tgz"的压缩文件。这个压缩包包含了运行Spark所需的所有组件,包括Java库、Python库(pyspark)、...

Global site tag (gtag.js) - Google Analytics