前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spark内核分析之SparkContext初始化源码分析

Spark内核分析之SparkContext初始化源码分析

作者头像
z小赵
发布2018-09-05 15:46:42
7190
发布2018-09-05 15:46:42
举报

上一篇介绍了spark作业提交的三种方式,从本篇开始逐一介绍Spark作业运行流程中各个组件的内部工作原理。如标题所说,我们先来看看SparkContext在Spark作业提交后做了哪些事情,工作流程如下图所示;(注意:本篇文章及后续源码分析所有内容全部基于spark1.3.0源码进行分析,后续不再赘述

SparkContext初始化流程图

1.Spark作业提交以后,通过SparkContext的createTaskScheduler()方法来初始化scheduler(TaskSchedulerImpl)和backend(SparkDeploySchedulerBackend)对象; 2.通过scheduler的initialize()方法初始化其对应的线程池; 3.调用scheduler的start()方法,在scheduler的start()方法内部调用backend的start()方法; 4.在backend的start()方法内部,创建AppClient对象,并通过该对象的start()方法调用RegisterWithMaster方法,通过该方法向Master请求注册; 5.Master调用worker,worker启动executor后向backend注册信息;

下面附上源码部分截图;

SparkContext初始入口

初始化TaskScheduler等相关信息

初始化taskScheduler线程池及调度方式

taskScheduler的start方法

backend的start方法

初始化AppClient,调用registerWithMaster()方法

registerWithMaster方法实现

        以上即为SparkContext的初始化过程,在这个过程中同时也初始化了两外两个重要的组建,分别为DAGScheduler和Spark UI;启动DAGScheduler底层是基于DAGSchedulerEventProcessActor进行通信的,SparkUI是通过底层的jetty服务器来提供web服务的;针对这两个组件后续会有详细讲解。

总结:以上即为SparkContext的初始化过程,源码涉及的类有:SparkContext,TaskSchedulerImpl,SparkDeploySchedulerBackend,AppClient等,有兴趣的可以查看所有详细实现。欢迎关注。

如需转载,请注明:

上一篇:Spark内核分析之spark作业的三种提交方式

本篇:Spark内核分析之SparkContext初始化源码分析

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.12.20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档