专栏首页简单聊聊SparkSpark内核分析之SparkContext初始化源码分析

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 条评论
登录 后参与评论

相关文章

  • Spark性能调优篇三之广播方式传输数据

            接着之前的Spark调优系列文章,我们今天介绍一下通过广播的方式优化我们的Spark作业运行效率。在介绍文章之前,我们首先来分析一下我们Spar...

    z小赵
  • Spark性能调优九之常用算子调优

            前面介绍了很多关于Spark性能的调优手段,今天来介绍一下Spark性能调优的最后一个点,就是关于Spark中常用算子的调优。废话不多说,直接进...

    z小赵
  • Spark内核分析之spark作业的三种提交方式

            最近在研究Spark源码,顺便记录一下,供大家学习参考,如有错误,请批评指正。好,废话不多说,这一篇先来讲讲Spark作业提交流程的整体架构。

    z小赵
  • 五分钟零基础介绍 Spark

    相信大家都听说过火的不能再火、炒得不能再炒的新一代大数据处理框架 Spark. 那么 Spark 是何方神圣?为何大有取代 Hadoop 的势头?Spark 内...

    包子面试培训
  • python 实现N个人,从1数到3,数

    py3study
  • 支付系统常见问题与解决方案

    本文简单介绍下几个常见对问题,和一些思考。(作者也是刚刚学习,有理解不对的地方敬请斧正)

    windealli
  • Facebook将照片3D化技术商用,强大的算法+海量的数据+移动端优化是工程亮点

    近日,Facebook AI 团队官宣使用其 Facebook APP的用户均可以方便的在手机端将单摄像头拍摄的2D图像转成3D图像,这项服务支持iPhone ...

    CV君
  • 使用 shell-operator 实现 Operator

    在本文我们将介绍简化 Kubernetes Operator 创建的方法,并展示如何使用 shell-operator 轻松实现自己的 Operator。本文基...

    我是阳明
  • 使用shell-operator实现Operator

    在本文我们(Flant)将介绍简化 Kubernetes Operator 创建的方法,并展示如何使用 shell-operator 轻松实现自己的 Opera...

    CNCF
  • 自然语言处理之文本卷积

    自然语言处理之文本卷积 1.文本的向量表示 2.文本的1维卷积 3.池化

    我爱自然语言处理

扫码关注云+社区

领取腾讯云代金券