Spark源码系列之Standalone模式下Spark应用的整个启动过程

一,Standalone模式下的spark角色

大家都知道在Standalone模式下,spark一共有以下五种角色:sparksubmit,master,Worker,Driver,Executor。具体这五种角色在我们提交应用的时候起到哪些作用呢,我们下面就来详细讲解。

1,SparkSubmit

加载一个Spark应用程序的入口。这个类处理设置spark相关依赖的Classpath(足见其重要性),同时屏蔽了不同集群管理器和不同部署模式的细节,为用户提供统一接口。

2,Master

主要功能:

A),接受worker的注册并管理Worker
B),接受SparkSubmit提交的Application,并调度启动Driver(发送LaunchDriver给Worker)。
C),接受Driver端AppClient发送的RegisterApplication(appDescription,self),然后调度,发送LaunchExecutor消息给Worker。

3,Worker

A),向Master注册,并维持心跳。
B),接受Master的LaunchDriver消息,并启动Driver。
C),接受Master的LaunchExecutor消息,并启动Executor。

4,Driver

A),通过AppClient向Master注册App,此时携带者CoraseGrainedExecutorBackend信息。
B),接受Executor注册,维护Executor信息。
C),划分Stage,封装task,并调度task。

5,Executor

A),向Driver注册自己并维护心跳
B),接受Driver的LaunchTask信息,并执行task。
C),将task执行结果返回给Driver。

二,Standalone提交一个应用源码过程

1,启动Driver的过程

Org.apache.spark.launcher.Main
org.apache.spark.deploy.SparkSubmit
org.apache.spark.deploy.rest.RestSubmissionClient
Org.apache.spark.deploy.rest.StandaloneRestServer
org.apache.spark.deploy.master.Master
Org.apache.spark.deploy.worker.Worker
Org.apache.spark.deploy.worker.DriverRunner
org.apache.spark.deploy.worker.DriverWrapper

用户自定义程序 ~~~

2,启动Executor的过程

org.apache.spark.SparkContext
Org.apache.spark.scheduler.cluster.SparkDeploySchedulerBackend
Org.apache.spark.deploy.client.AppClient
org.apache.spark.deploy.master.Master
Org.apache.spark.deploy.worker.Worker
Org.apache.spark.deploy.worker.ExecutorRunner
org.apache.spark.executor.CoarseGrainedExecutorBackend
org.apache.spark.executor.Executor

3,执行task的过程

org.apache.spark.scheduler.cluster.CoarseGrainedSchedulerBackend
org.apache.spark.executor.CoarseGrainedExecutorBackend
org.apache.spark.executor.Executor
org.apache.spark.executor.TaskRunner

三,结合具体流程图讲解

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值