Spark源码分析学习记录1-SparkContext

概述

Spark是目前相当火爆的大数据分析引擎,笔者使用它也是有一段时间,一直想剖析一下它的源码,从中学到代码设计、系统构建的经验。这一系列分析的Spark版本是2.2.0,这是系列的第一篇,主要从我们最熟悉的SparkContext开始入手。

SparkContext的初始化

TaskScheduler的初始化

我们先来看一下TaskScheduler的初始化是怎么完成的

val (sched, ts) = SparkContext.createTaskScheduler(this, master, deployMode)
    _schedulerBackend = sched
    _taskScheduler = ts
    _dagScheduler = new DAGScheduler(this)

可以看到,createTaskScheduler的方法参数里面有master 和 deployMode, 这两个参数就是我们用spark-submit 命令提交任务时使用的–master 和 –deploy-mode 指定的字符串。下面我们来看一下方法具体的内容

private def createTaskScheduler(
      sc: SparkContext,
      master: String,
      deployMode: String): (SchedulerBackend, TaskScheduler) = {
master match {
    case xx => (backend, scheduler)
}
}

master进行模式匹配,根据不同的master 初始化SchedulerBackend 和 TaskScheduler

DAGScheduler的初始化

DAGScheduler的初始化是在TaskScheduler之后的,看如下代码

def this(sc: SparkContext) = this(sc, sc.taskScheduler)

这个是DAGScheduler的构造器,在SparkContext的代码中就是调用这个构造器来初始化DAGScheduler的,可以看到它使用了sc的taskScheduler,所以DAGScheduler需要在TaskScheduler之后初始化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值