【Spark】SparkContext源码解读

本文详细解读了SparkContext的初始化过程,包括生成SparkConf、创建LiveListenerBus监听器、构建SparkEnv运行环境、初始化SparkUI、创建TaskScheduler和DAGScheduler、添加EventLoggingListener监听器以及加入SparkListenerEvent事件。SparkContext是Spark应用的核心,负责与底层执行交互,文中还探讨了SparkContext中的关键函数如textFile和runJob的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SparkContext的初始化

SparkContext是应用启动时创建的Spark上下文对象,是进行Spark应用开发的主要接口,是Spark上层应用与底层实现的中转站(SparkContext负责给executors发送task)。
SparkContext在初始化过程中,主要涉及一下内容:

  • SparkEnv
  • DAGScheduler
  • TaskScheduler
  • SchedulerBackend
  • SparkUI

生成SparkConf

SparkContext的构造函数中最重要的入参是SparkConf。SparkContext进行初始化的时候,首先要根据初始化入参来构建SparkConf对象,进而再去创建SparkEnv。

创建SparkConf对象来管理spark应用的属性设置。SparkConf类比较简单,是通过一个HashMap容器来管理key、value类型的属性。
下图为SparkConf类声明,其中setting变量为HashMap容器:

下面是SparkContext类中,关于SparkConf对象的拷贝过程:

创建LiveListenerBus监听器

这是典型的观察者模式,向LiveListenerBus类注册不同类型的SparkListenerEvent事件,SparkListenerBus会遍历它的所有监听者SparkListener,然后找出事件对应的接口进行响应。

下面是SparkContext创建LiveListenerBus对象:

  // An asynchronous listener bus for Spark events
  private[spark] val listenerBus = new LiveListenerBus

创建SparkEnv运行环境

在SparkEnv中创建了MapOutputTracker、MasterActor、BlockManager、CacheManager、HttpFileServer一系列对象。
下图为生成SparkEnv的代码:

SparkEnv的构造函数入参列表为:

class SparkEnv (
    val executorId: String,
    val actorSystem: ActorSystem,
    val serializer: Serializer,
    val closureSerializer: Serializer,
    val cacheManager: CacheManager,
    val mapOutputTracker: MapOutputTracker,
    val shuffleManager: ShuffleManager,
    val broadcastManager: BroadcastManager,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值