Spark On Yarn架构

client模式

图片

特征:driver在client上,AM只负责申请资源

  1. 提交任务:用户在cilent端通过spark-submit提交job
  2. 启动driver:driver进程在提交的本地机器上启动
  3. 申请AM:driver向RM请求启动AM
  4. 启动AM:RM分配一个container在某个NM上启动AM
  5. 申请executor:AM向RM申请运行executor所需的资源
  6. 启动executor:RM分配资源,AM在对应的NM上启动executor进程
  7. 注册与执行:executor启动后,向client上的driver反向注册。driver将task分发给executor执行

cluster模式

图片

特征:driver在集群内部,driver和AM合二为一

  1. 提交任务:用户在cilent端通过spark-submit提交job
  2. 申请AM:client向RM请求启动AM
  3. 启动AM和driver:RM分配一个container在某个NM上启动AM。此时AM内部直接启动driver
  4. 申请executor:AM向RM申请运行executor所需的资源
  5. 启动executor:RM分配资源,AM在对应的NM上启动executor进程
  6. 注册与执行:executor启动后,向集群内部的AM(driver/0反向注册。driver将task分发给executor执行

总结

Client模式下,流程是这样的:首先在客户端启动Driver,然后Driver去申请启动AM。AM启动后,负责帮Driver去向YARN申请资源来启动Executor。Executor启动后,直接向客户端的Driver注册并拉取任务。

Cluster模式下,最大的不同是Driver的位置:客户端提交任务后,YARN会直接在集群的一个节点上启动AM,Driver就运行在这个AM里面。之后Driver(也就是AM)自己去申请资源启动Executor,Executor向它自己所在的集群节点注册。

简单来说,Client模式Driver在本地,Cluster模式Driver在集群内部

posted @ 2026-01-29 22:26  scales123  阅读(3)  评论(0)    收藏  举报