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

        上一篇介绍了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初始化源码分析

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Hadoop实操

如何启用Impala的动态资源池

在Cloudera Manager中动态资源池分为Yarn的动态资源池和Impala的动态资源池两种。Fayson在前面有多篇文章介绍了Yarn动态资源池的使用...

66940
来自专栏Jed的技术阶梯

Spark性能调优01-资源调优

在开发完Spark作业之后,就该为作业配置合适的资源了。 Spark的资源参数,基本都可以在spark-submit命令中作为参数设置。

13520
来自专栏喵了个咪的博客空间

[喵咪大数据]Hadoop单机模式

千里之行始于足下,学习大数据我们首先就要先接触Hadoop,上节介绍到Hadoop分为Hadoop-HDFS,Hadoop-YARN,Hadoop-Mapred...

33760
来自专栏Hadoop实操

0459-如何使用SQuirreL通过JDBC连接CDH的Hive(方式一)

SQuirreL SQL Client是一个使用Java写的访问各种数据库客户端工具,使用JDBC统一了数据库的访问接口,通过SQuirreL SQL Clie...

12330
来自专栏Hadoop实操

如何在CDH集群外配置非Kerberos环境的Gateway节点

21140
来自专栏维C果糖

详述 IntelliJ IDEA 中自动生成 serialVersionUID 的方法

当我们用 IntelliJ IDEA 编写类并实现 Serializable(序列化)接口的时候,可能会遇到这样一个问题,那就是: 无法自动生成serialVe...

320100
来自专栏Hadoop实操

如何在CDSW上调试失败或卡住的Spark应用

默认情况下,CDSW会话中的Spark应用程序只显示ERROR级别的日志,当作业出现异常或卡住时无法查看作业运行详细日志及异常堆栈信息,不能根据日志的上下文正确...

16830
来自专栏个人分享

Hadoop的管理目录

1、NameNode的文件结构,NameNode会创建VERSION、edits、fsimage、fstime文件目录。其中dfs.name.dir属性是一个目...

31120
来自专栏AILearning

Apache Spark 2.2.0 中文文档 - 集群模式概述 | ApacheCN

集群模式概述 该文档给出了 Spark 如何在集群上运行、使之更容易来理解所涉及到的组件的简短概述。通过阅读 应用提交指南 来学习关于在集群上启动应用。 ...

18850
来自专栏云计算教程系列

在腾讯云CVM上搭建Hadoop集群

本教程将介绍如何在腾讯云CVM上搭建Hadoop集群。Hadoop中是一个Apache的框架,可以让你通过基本的编程处理跨服务器集群的分布式方式的大型数据集。H...

26640

扫码关注云+社区

领取腾讯云代金券