Spark - Standalone部署模式

Standalone部署模式有两种,一个是client模式,一个是cluster模式,其中client模式是默认的。

client

某个可以连Spark集群的服务器,通过spark-submit的shell脚本,启动SparkSubmit的时候,就会创建一个Application。
Spark - Standalone部署模式_第1张图片
这个Application里会有ClientEndpoint和集群管理器进行对话,还有一个DriverEndpoint,用于Worker的Executor进行对话,所以我们这个Application是和SparkSubmit同一个进程的。
Spark - Standalone部署模式_第2张图片

cluster

cluster也是某个可以连Spark集群的服务器,通过spark-submit的shell脚本,启动SparkSubmit的时候,会创建一个与Master通信的RPC服务。
Spark - Standalone部署模式_第3张图片
这个RPC服务,就是向Master请求Driver资源。
Spark - Standalone部署模式_第4张图片
Master收到申请Driver的请求后,就会创建一个Driver信息,保存在内存中,并把Driver持久化,便于故障转移恢复。
Spark - Standalone部署模式_第5张图片
Master发现此时有个Worker的CPU和内存,够启动Driver,于是让发信息给这个Worker让他去启动,并且回复给SparkSubmit说已经创建好Driver了,并且把driverId给SparkSubmit。
Spark - Standalone部署模式_第6张图片
SparkSubmit5秒后,会那着这个driverId去验证一下是否有效,如果无效,则关闭当前进程。
Spark - Standalone部署模式_第7张图片
Worker收到信息后,就会下载用户指定的Jar文件,通过这个jar文件开启一个进程,创建Driver,这个Driver会根据反射,启动Application。
Spark - Standalone部署模式_第8张图片
后面的流程就跟上面client一样了,Application里会有ClientEndpoint和集群管理器进行对话,还有一个DriverEndpoint,用于Worker的Executor进行对话。
Spark - Standalone部署模式_第9张图片
所以client和cluster的区别是,clien的Application是直接在提交程序的进程里,而cluster是在worker的某个进程里。

源码思维导图

SparkSubmit
SparkSubmit消息
master-处理消息
Worker-处理信息

你可能感兴趣的:(spark)