spark任务提交方式yarn-client和yarn-cluster对比

spark中yarn模式有两种任务提交方式,分别是yarn-client模式和yarn-cluster模式,其区别如下:

一、yarn-client任务提交方式

1、yarn-client模式提交任务后,会在客户端启动Driver。

2、应用程序启动后会向ResourceManager(RM)发送请求,请求启动一个ApplicationMaster(AM)资源。

3、RM的Applications Manager(ASM)向 Scheduler申请空闲container。

4、Scheduler 向 ASM 返回空闲 container 信息(NM等)。

5、RM(ASM)根据返回信息向 NM 申请资源启动AM。

6、NM 分配创建一个container 并创建Spark Application Master(AM)。

7、AM启动后,和RM(ASM)通讯,请求根据任务信息向RM(ASM)申请 container 来启动 executor。

8、RM收到请求,向AM返回一批NM节点。

9、AM会向NM发送命令启动Executor。

10.启动Executor。

11、Executor启动后会反向注册给Driver。

12、Driver发送Task到Executor执行,并监控执行情况和结果。

spark任务提交方式yarn-client和yarn-cluster对比_第1张图片

二、yarn-cluster任务提交方式

1、由client向RM提交请求,并上传jar到HDFS上。

这期间包括四个步骤:

a). 连接到RM。

b). 从 RM ASM(Applications Manager )中获得metric、queue和resource等信息。

c). 上传 app jar and spark-assembly jar。

d). 设置运行环境和container上下文(launch-container.sh等脚本)。

2、ASM 向 Scheduler 申请空闲 container。

3、Scheduler 向 ASM 返回空闲 container 信息(NM 等)。

4、RM(ASM)根据返回信息向 NM 申请资源。

5、NM 分配创建一个container 并创建Spark Application Master(AM),此时 AM 上运行的是 Spark Driver。(每个SparkContext都有一个 AM)。

6、AM启动后,和RM(ASM)通讯,请求根据任务信息向RM(ASM)申请 container 来启动 executor。

7、RM(ASM)将申请到的资源信息返回给AM。

8、AM 根据返回的资源信息区请求对应的 NM 分配 container 来启动 executor。

9、NM 收到请求会启动相应的 container 并启动 executor。

10、Executor启动后会反向注册给Driver。

11、Driver发送Task到Executor执行,并监控执行情况和结果。

spark任务提交方式yarn-client和yarn-cluster对比_第2张图片

总结:

在yarn-client模式下,Driver运行在Client上,通过ApplicationMaster向RM获取资源。本地Driver负责与所有的executor container进行交互,并将最后的结果汇总。它的 AM 只是作为一个 Executor 启动器,并没有 Driver 进程。而且 Executor启动后是与 Client 端的 Driver 进行交互的,所以 Client 如果挂了 任务也就挂了。

在yarn-cluster模式下,Driver运行在AM上,就算Client挂了任务也能正常运行。

另外,在yarn-client、yarn-cluster 提交模式中,可以不启动Spark集群,因为相关的jvm环境由yarn管理(启动、结束等)。

standalone 提交模式中 Spark 集群一定要启动,因为需要依赖worker、Master进行任务的启动、调度等。

你可能感兴趣的:(spark,大数据,hadoop)