通过spark-sumbit提交Standalone集群+Clientr部署模式下的程序的流程
spark-submit提交程序
- SparkSubmit相应提交程序请求
- 由于是standalone集群+部署模式(deployMode)是client的方式,因此逻辑执行到在SparkSubmit的main方法里通过反射构造应用的class的main函数
- 程序执行到程序的main函数中
- 创建SparkContext对象
1. 创建private[spark] var (schedulerBackend, taskScheduler) = SparkContext.createTaskScheduler(this, master)
2. 创建 dagScheduler = new DAGScheduler(this)
- 在createTaskScheduler方法中,创建SparkDeploySchedulerBackend对象,SparkDeploySchedulerBackend继承自SparkDeploySchedulerBackend
- 在SparkContext的构造方法中,调用TaskScheduler的start方法,在start方法内部调用SparkDeploySchedulerBackend的start方法
- 在SparkDeploySchedulerBackend的start方法中,构造AppClient对象,并调用AppClient的start方法
- 在AppClient中,执行preStart方法以调用registerWithMaster()方法,将Driver注册给Master。注册的动作实际上是AppClient给Master发送RegisterApplication消息,
- 在Master的RegisterApplication消息处理中,调用Master的schedule方法(注意资源调度策略)
- 在Master的schedule方法中调用launchExecutor方法
- 在Master的launchExecutor方法中,给Worker发送LaunchExecutor消息
- 在Workder的LaunchExecutor消息处理器中,创建ExecutorRunner对象,而ExecutorRunner则通过反射的方式创建一个Java进程,这个进程就是启动一个CoarseGrainedExecutorBackend进程
- CoarseGrainedExecutorBackend是一个Actor,首先运行它的preStart方法,在它的preStart方法中,给Driver发送RegisterExecutor消息
- 此处的Driver是在CoarseGrainedSchedulerBackend中定义的,当它收到RegisterExecutor时,调用CoarseGrainedSchedulerBackend的makeOffers方法
- 在makeOffers中,调用launchTasks方法启动任务
- 在launchTasks中,循环提交所有的Task(这本来是一个TaskSet任务集),每次循环给CoarseGrainedExecutorBackend发送LaunchTask消息
- CoarseGrainedExecutorBackend处理LaunchTask时,调用Executor的launchTask方法
- 在Executor的launchTask方法中,提交给Executor中的线程池执行
可见,standalone+client的方式,相对于standalone+cluster的方式,省略了如下三个步骤
- ClientActor给Master发送RequestSubmitDriver消息
- Master给Worker发送LaunchDriver的消息
- Worker创建并启动Driver进程
如下图所示,第二步动作是在AppClient的preStart的registerWithMaster()方法中给Master发送的RegisterApplication消息。所以,Driver实际上并未向Master注册,而是发送了RegisterApplication消息。
相关推荐
1. 解压Spark安装包 2. 配置Spark环境变量 2. 修改 spark-env.sh 文件,完成以下设置: 1. 设置运行master进程的节点, e
Spark是基于内存计算的大数据并行计算框架,实际中运行计算任务肯定是使用集群模式,那么我们先来学习Spark自带的standalone集群模式了解一下它的架构及运行机制。 Standalone集群使用了分布式计算中的master-...
Spark standalone 分布式集群搭建,Spark standalone运行模式,Spark Standalone运行架构解析---Spark基本工作流程,Spark Standalone运行架构解析---Spark local cluster模式
独立部署模式standalone下spark配置,从乌班图到jak,scala,hadoop,spark的安装 部署
描述了spark1.2.1在standalone集群模式和on yarn集群模式下的部署与运行方式。
1.进行相应的解压操作之后,...4.进入bin目录执行 ./start-cluster.sh启动集群 (之前要做好ssh免密设置,可以省去输密码的麻烦) 5.查看Web UI 输入通过浏览器访问flink主节点的8081端口 http://192.168.198.129:8081
spark-2.0.1集群安装及编写例子提交任务,包括集群安装包及例子代码加上安装文档, spark-2.0.1集群安装及编写例子提交任务,包括集群安装包及例子代码加上安装文档
Spark standalone 单机版部署,看了网上很多方法,事实证明都是错误的,本人亲身经历,在导师的指导下,成功配置成功单机版。
Flink任务、Spark任务提交到集群,通常需要将可执行Jar上传到集群,手动执行任务提交指令,如果有配套的大数据平台则需要上传Jar,由调度系统进行任务提交。 对开发者来说,本地IDEA调试Flink、Spark任务不涉及对象...
springboot整合spark连接远程服务计算框架使用standAlone模式
本文档主要讲解Flink Standalone模式的集群的安装部署方法。此外,还包含了集群启停、任务提交、查看日志、执行自定义流处理程序等扩展主题。文档力求内容详实、步骤清晰,使读者阅后即可百分百掌握,不留疑问,轻松...
tyrus-standalone-client-1.13.1.jar
前 言 大数据学习路线 大数据技术栈思维导图 ...Standalone 集群部署 六、HBase 简介 系统架构及数据结构 基本环境搭建 集群环境搭建 常用 Shell 命令 Java API 过滤器详解 可显示字数有限,详细内容请看资源。
Spark Standalone架构设计.docx
Spark 官方文档翻译,Spark 单机版部署方式,在CentOS 7 的环境下的开发方法
spark的Standalone模式安装 一、安装流程 1、将spark-2.2.0-bin-hadoop2.7.tgz 上传到 /usr/local/spark/ 下,然后解压 2、进入到conf中修改名字 改为 .sh 结尾的 3、编辑 spark-env.sh 4、修改slaves 的...
主要介绍了spark之Standalone模式部署配置详解,小编觉得挺不错的,这里分享给大家,供各位参考。
Flink standalone集群安装步骤-V1.6.1 一主两从的Flink集群安装配置步骤
折腾了很久,终于开始学习Spark的源码...这个是提交到standalone集群的方式,打开spark-submit这文件,我们会发现它最后是调用了org.apache.spark.deploy.SparkSubmit这个类。我们直接进去看就行了,main函数就几行代码
flink 独立集群部署的dockerfile、dockercompose文件