Spark Context

1.创建LiveListenerBus用于构建Spark事件处理模型
private[spark] val listenerBus = new LiveListenerBus
2.JobProgressListener创建并向listenerBus注册
_jobProgressListener = new JobProgressListener(_conf)
listenerBus.addListener(jobProgressListener)
3.初始化SparkEnv
_env = createSparkEnv(_conf, isLocal, listenerBus)
SparkEnv.set(_env)
4.创建MetadataCleaner
_metadataCleaner = new MetadataCleaner(MetadataCleanerType.SPARK_CONTEXT, this.cleanup, _conf)
5.创建SparkStatusTracker,通过JobProgressListener获取spark app中的Job和Stage信息
_statusTracker = new SparkStatusTracker(this)
6.创建ConsoleProcessBar,通过从SparkStatusTracker获取Stage的执行进度并在控制台显示
_progressBar =
if (_conf.getBoolean("spark.ui.showConsoleProgress", true) && !log.isInfoEnabled) {
Some(new ConsoleProgressBar(this))
} else {
None
}
7.创建HeartBeatReceiver
_heartbeatReceiver = env.rpcEnv.setupEndpoint(
HeartbeatReceiver.ENDPOINT_NAME, new HeartbeatReceiver(this))
8.创建TaskScheduler,同时创建TaskSchedulerBackend
val (sched, ts) = SparkContext.createTaskScheduler(this, master)
9.创建DAGScheduler
_dagScheduler = new DAGScheduler(this)
10.启动TaskScheduler
_taskScheduler.start()
11.通过TaskScheduler获取applicationId
_applicationId = _taskScheduler.applicationId()
12.blockManager初始化
_env.blockManager.initialize(_applicationId)
13.启动MetricsSystem
metricsSystem.start()
14.Attach driver metrics servlet handler to the web ui
metricsSystem.getServletHandlers.foreach(handler => ui.foreach(_.attachHandler(handler)))
15.创建 并启动EventLoggingListener,listener向listenerBus注册
_eventLogger =   new  EventLoggingListener( _applicationId _applicationAttemptId _eventLogDir .get,
_conf, _hadoopConfiguration)
logger.start()
listenerBus.addListener(logger)
16.
valdynamicAllocationEnabled = Utils.isDynamicAllocationEnabled(_conf)
17.创建并启动 ExecutorAllocationManager
_executorAllocationManager= new  ExecutorAllocationManager( this listenerBus _conf )
_executorAllocationManager .start()

18.创建并启动 ContextCleaner
_cleaner =
if (_conf.getBoolean("spark.cleaner.referenceTracking", true)) {
Some(new ContextCleaner(this))
19.设置并启动ListenerBus
20. postEnvironmentUpdate
21. postApplicationStart
22.
// Post init
_taskScheduler.postStartHook()
_env.metricsSystem.registerSource(_dagScheduler.metricsSource)
_env.metricsSystem.registerSource(new BlockManagerSource(_env.blockManager))
_executorAllocationManager.foreach { e =>
_env.metricsSystem.registerSource(e.executorAllocationManagerSource)
}

// Make sure the context is stopped if the user forgets about it. This avoids leaving
// unfinished event logs around after the JVM exits cleanly. It doesn't help if the JVM
// is killed, though.
_shutdownHookRef = ShutdownHookManager.addShutdownHook(
ShutdownHookManager.SPARK_CONTEXT_SHUTDOWN_PRIORITY) { () =>
logInfo("Invoking stop() from shutdown hook")
stop()
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值