Spark有yarn-client和yarn-cluster两种模式,主要区别在于:Driver程序的运行节点。
yarn-client:Driver程序运行在客户端,适用于交互、调试,希望立即看到app的输出。
yarn-cluster:Driver程序运行在由ResourceManager启动的APPMaster适用于生产环境。
1)客户端模式(默认)

解释:
- 左边是提交的submit,右边是yarn模式下,对应的resourcemanager和nodemanager;
- 当提交任务的时候,会通过sparksubmit平台提交到客户端,Driver就在本机,会在driver中做三个操作:
1.初始化代码
2.初始化spark context,这是程序sparkcore程序的入口
3.任务切分,类似于切片
- 然后会启动ExecutorLauncher,ResourceManager就会在某一个节点上开启ExecutorLauncher.然后就会申请资源;
- 申请之后,就会启动ExecutorBackend,在它里面去创建一个executor。有了executor之后,Driver在去给executor分配任务。
- 注意:ExecutorLauncher是不执行任务的,执行任务的操作都是在executor中进行。
2)集群模式

详解:
- 仍然是左边提交代码,右边是集群。
- 提交代码到SparkSubmit,然后作为客户端,提交命令给RM;
- rm会把任务提交给集群上的一个ApplicationMaster,在节点上启动对应的Driver;
- Driver还是执行上面的三个步骤:
1.初始化代码
2.初始化spark context,这是程序sparkcore程序的入口
3.任务切分,类似于切片
- 然后Driver开始申请资源,开始干活,然后给申请到的Executor分配任务。

本文详细分析了Spark在Yarn模式下的两种运行方式——客户端模式和集群模式。客户端模式中,Driver运行在本地,适合交互和调试;而在集群模式下,Driver由ResourceManager启动的APPMaster运行,适用于生产环境。两种模式的主要区别在于Driver的运行位置及其与Executor的关系。
16万+

被折叠的 条评论
为什么被折叠?



