Spark内核源码解析
1.spark内核架构常用术语
Application:基于spark程序,包含一个driver program(客户端程序)和多个executeor(线程)
Driver Progrom:代表着sparkcontext
executeor:某个Application运行在worker node上的一个进程,该进程负责运行Task,并且将数据存储到内存或者磁盘上,每个Application都有各自独立的executeor。
worker node:集群中任何可以运行Application代码的节点。
Task:被传送到某个executeor的工作单元。
Cluster Manager:在集群上获取外部服务(例如:Standalone\Year\Mesos)
job:包含多个Task组成的并行计算,往往有spark的action催生
stage:每个job会被拆分很多组task任务,每组任务被称为stage,也称为TaskSet
RDD:Spark的基本计算单元,可以通过一系列算子进行操作(主要有Transformation和Action)
DAG Scheduler:根据job构建基于Stage的DAG,并提交Stage给Task Scheduler
Task Scheduler:将Taskset提交给worker(集群)运行并回报结果
2.创建SparkContext

1.1 在shell下,spark-submit使用standalone模式提交的时候,其实会通过反射的方式,创建和构造一个Driveractor(和java的actor进程差不多)
1.2 Driver进程在执行我们提交的Application代码的时候,会先构建SparkConf,再构建SparkContext.
1.3 SparkContext在初始化的时候,做的最重要的事情,就是构造DAG Scheduler和Task Scheduler
1.4 TaskScheduler实际上,是会负责与它对应的一个后台进程,去连接Spark集群的Master并注册Application
1.5 Master接收到Application的注册请求后,会使用自己的资源调度算法(基于调度器standalone、Yarn、Mesos等都有不同的调度算法),在Spark集群的Worker上会为i这个Application启动Executor
1.6 Master通知Worker启动Executor后,Worker会为Application启动Executor进程
1.7 Executer启动后,首先做的就是会将自己反向注册给Task Scheduler上去,到此为止SparkContext完成了初始化
3.运行Application

2.1 所有的Executer都会反向注册给Driver programe,Driver Programe当结束SparkContextc初始化后,会继续只想我们编写的代码哦
2.2 每执行一个Action就会创建一个job,job会提交给DAG Scheduler
2.3 DAG Scheduler会采用自己的stage划分算法将job划分为多个stage,然后每个stage会创建一个TaskSet
2.4 DAG Scheduler会将TaskSet传递给Task Scheduler,Task Scheduler会把TaskSet里的每一个Task提交到Worker上的Executer上执行
2.5 Executor每接收一个task都会用TaskRunner来封装task,然后从线程池里面取出一个线程,执行这个task,TaskRunner将我们编写的代码,也就是要执行的算子以及函数,拷贝,反序列化,然后执行Task。
2.6 Task有两种,ShuffleMapTsk和ResultTask。只有最后一个stage是ResultTask,之前的stage,都是ShuffleMapTask.
2.7所以,最后整个应用程序的执行,就是将stage分批次作为taskSet提交给executeor执行,每个task针对RDD的一个partition,执行我们定义的算子和函数,为此类推,知道所有的操作完成为止。
Spark内核源码解析的更多相关文章
- (升级版)Spark从入门到精通(Scala编程、案例实战、高级特性、Spark内核源码剖析、Hadoop高端)
本课程主要讲解目前大数据领域最热门.最火爆.最有前景的技术——Spark.在本课程中,会从浅入深,基于大量案例实战,深度剖析和讲解Spark,并且会包含完全从企业真实复杂业务需求中抽取出的案例实战.课 ...
- Spark SQL源码解析(三)Analysis阶段分析
Spark SQL原理解析前言: Spark SQL源码剖析(一)SQL解析框架Catalyst流程概述 Spark SQL源码解析(二)Antlr4解析Sql并生成树 Analysis阶段概述 首先 ...
- Spark SQL源码解析(四)Optimization和Physical Planning阶段解析
Spark SQL原理解析前言: Spark SQL源码剖析(一)SQL解析框架Catalyst流程概述 Spark SQL源码解析(二)Antlr4解析Sql并生成树 Spark SQL源码解析(三 ...
- Spark SQL源码解析(五)SparkPlan准备和执行阶段
Spark SQL原理解析前言: Spark SQL源码剖析(一)SQL解析框架Catalyst流程概述 Spark SQL源码解析(二)Antlr4解析Sql并生成树 Spark SQL源码解析(三 ...
- Spark SQL源码解析(二)Antlr4解析Sql并生成树
Spark SQL原理解析前言: Spark SQL源码剖析(一)SQL解析框架Catalyst流程概述 这一次要开始真正介绍Spark解析SQL的流程,首先是从Sql Parse阶段开始,简单点说, ...
- Spark Streaming运行流程及源码解析(一)
本系列主要描述Spark Streaming的运行流程,然后对每个流程的源码分别进行解析 之前总听同事说Spark源码有多么棒,咱也不知道,就是疯狂点头.今天也来撸一下Spark源码. 对Spark的 ...
- [源码解析] 深度学习分布式训练框架 horovod (8) --- on spark
[源码解析] 深度学习分布式训练框架 horovod (8) --- on spark 目录 [源码解析] 深度学习分布式训练框架 horovod (8) --- on spark 0x00 摘要 0 ...
- [源码解析] 深度学习分布式训练框架 horovod (9) --- 启动 on spark
[源码解析] 深度学习分布式训练框架 horovod (9) --- 启动 on spark 目录 [源码解析] 深度学习分布式训练框架 horovod (9) --- 启动 on spark 0x0 ...
- [源码解析] 深度学习分布式训练框架 horovod (10) --- run on spark
[源码解析] 深度学习分布式训练框架 horovod (10) --- run on spark 目录 [源码解析] 深度学习分布式训练框架 horovod (10) --- run on spark ...
随机推荐
- Cmd有关IP的部分命令
ping命令判断系统数据包在传送的时候至少会经过一个以上的路由器,当数据包经过一个路由器的时候,TTL就会自动减1,如果减到0了还是没有传送到目的主机,那么这个数据包就会自动丢失,这时路由器会发送一个 ...
- Storm实践(一):基础知识
storm简介 Storm是一个分布式实时流式计算平台,支持水平扩展,通过追加机器就能提供并发数进而提高处理能力:同时具备自动容错机制,能自动处理进程.机器.网络等异常. 它可以很方便地对流式数据进行 ...
- ajax请求自动刷新页面
ajax是异步请求技术,可以实现页面的局部刷新.但是今天写代码的时候发现每次ajax之后都会发生整个页面的刷新,最后发现这是因为触发ajax事件的input标签的type设置为了submit,所以会产 ...
- 【原】linux下部署web
本机安装xshell.新建->主机处输入ip->确定,按提示输入用户名和密码 安装jdk(一般Linux上都已经安装好了) 安装tomcat. (1)在tomcat官网上下载tar.gz版 ...
- ML paper 导图笔记.md
<Learning Structured Representation for Text Classification via Reinforcement Learning> <基于 ...
- windows 控制台 命令行指令换行
由于屏幕较小而指令太长,在书写的时候不好阅读. 其实cmd和Linux一样可以通过特殊符号换行的: Linux 为 \ 而cmd 为 ^ 看图 这就很美观了,拯救了我的强迫症 ^_^ ...
- js实现移动端悬浮图标拖拽
/** * Created by Administrator on 2019/5/23. */ window.onload = function () { var oDiv = document.ge ...
- perl 纯变量(Scalar) 转载
转载http://blog.chinaunix.net/uid-20639775-id-154591.html Perl有三种变量: 纯变量(Scalar Varible) 数组(Array) 关联数 ...
- Python 特点
优点 简单 -- Python 是一种代表简单主义思想的语言.阅读一个良好的 Python 程序就感觉像是在读英语一样,尽管这个英语的要求非常严格!Python 的这种伪代码本质是它最大的优点之一.它 ...
- luogu 1876 开灯 约数+打表
打表后发现答案都是完全平方数,直接输出即可. #include <cstdio> #include <algorithm> using namespace std; int m ...