标签:deploy worker Standalone Driver 源码 Master apache Spark spark
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
三,结合具体流程图讲解
四,视频解说
第一次录制,图文解说视频,不足之处望大家谅解。也欢迎大家评论区里指出,浪尖加以修正,更好的服务于大家。
标签:deploy,worker,Standalone,Driver,源码,Master,apache,Spark,spark 来源: https://blog.51cto.com/15127544/2662236
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。