SparkContext初始化机制

本文深入探讨了SparkContext的初始化过程,包括TaskSchedule的创建、DAGScheduler的初始化、SparkUI的启动以及源码解析。在TaskSchedule初始化时,SparkDeploySchedulerBackend在Master上注册Application、Driver和Worker。DAGScheduler基于DAGSchedulerEventProcessActor进行通信,SparkUI则在4040端口展示应用状态。重点问题包括Application的注册时机和DAGScheduler的调度机制。

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

目录

 

零:初始触发

一:TaskSchedule初始化(宏观)

二:DAGScheduler初始化(宏观)

三:SparkUI

四:源码解析

五:重点问题


零:初始触发

位置:org.apache.spark.SparkContext.scala
初始化代码:
val conf = new SparkConf().setAppName("WordCount");
val sc = new SparkContext(conf)

一:TaskSchedule初始化(宏观)

1.createTaskScheduler() ——》 TaskSchedulerImpl

2.TaskSchedulerImpl.start——》SparkDeploySchedulerBacked.start

3.AppClient——》ClientActor

4.registerWithMaster()
   tryRegisterAllMasters()
   RegisterApplication(case class)
在Master 上注册 Application
在Master 上注册 Driver
在Master 上注册 Worker
Worker上的Executor 反向注册到 TaskSchedule 中

重点:TaskSchedulerImpl底层实际主要基于    SparkDeploySchedulerBackend    来工作

 

二:DAGScheduler初始化(宏观)

DAGSchedulerEventProcessActor
DAGScheduler底层基于该组件进行通信(线程)

三:SparkUI

sparkUI:默认4040接口,显示application的运行状态
启动一个jetty服务器,来提供web服务,从而显示网页

 

四:源码解析

五:重点问题

1.什么时候开始Applicaiton的注册
Driver启动后,TaskSchedule()  初始化时
                                                                                         
2.补充了解:SchedulerImpl.scala
1.1>通过调用SchedulerBackend,针对不同类的 cluster(standalone,yarn,mesos),调度task
1.2>可以通过使用一个LocalBackend,并且将isLocal参数设置为true,来在本地模式儿下工作
2>负责处理一些通用的逻辑,决定多个job的调度顺序,启动推测任务执行
3>客户端首先调用它的 start() initialize()然后通过 runTasks()方法提交 task sets 

3.DAGScheduler.scala 补充:
1>实现了面向stage的调度机制的高层次的调度层
2>它会为每个job计算一个stage的DAG(有向无环图)    
3>追踪RDD和stage的输出是否被物化(写入磁盘或者内存等地方),寻找一个(最优,最小)调度机制来运行job
4>它会将stage作为tasksets提交到底层的TaskSchedulerImpl上,并且决定运行每个task的最佳位置
5>会处理运算文件的丢失等(shuffle计算而丢失,或者OM溢出等错误)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值