spark yarn 提交_Spark:三种任务提交流程standalone、yarn-cluster、yarn-client

standalone

Spark可以通过部署与Yarn的架构类似的框架来提供自己的集群模式。

该集群模式的架构设计与HDFS和Yarn大相径庭,都是由一个主节点多个从节点组成。

在Spark 的Standalone模式中:

主:为master

从:为worker

任务提交流程:

spark-submit 提交任务给 Master

Master 收到任务请求后通过 LaunchDriver 向 Worker 请求启动 Driver

Worker 收到请求后启动 Driver

Driver 启动后向 Master 注册(用户App信息)

Master 收到 App 信息后根据资源的情况向 Worker 发送 launchExecutor 启动 Excutor

Worker 收到 Master 的请求后启动相应的 Excutor

Excutor 启动后负责与 Driver 通信, 执行相关任务

Spark on Yarn

Application Master

在YARN中,每个Application实例都有一个Application Master进程,它是Application启动的第一个容器。它负责和ResourceManager打交道,并请求资源。获取资源之后告诉NodeManager为其启动container。

yarn-cluster和yarn-client模式的区别

yarn-cluster和yarn-client模式的区别其实就是Application Master(AM)进程的区别,yarn-cluster模式下,driver运行在AM中,它负责向YARN申请资源,并监督作业的运行状况。

当用户提交了作业之后,就可以关掉Client,作业会继续在YARN上运行,显然yarn-cluster模式不适合运行交互类型的作业。

而yarn-client模式下,ApplicationMaster仅仅向YARN请求executor,client会和请求的container通信来调度他们工作,也就是说Client不能离开。

yarn-cluster

与standalone模式不同,yarn-cluster是基于yarn集群进行调度管理的,yarn集群上有ResourceManager(RM)和NodeManager(NM)两个角色。

作业提交流程

由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等脚本)

ASM 向 Scheduler 申请空闲 container

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

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

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

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

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

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

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

executor 启动成后 反向向 AM 注册

executor 和 AM 交互 完成任务

后续的DAGScheduler、TaskScheduler、Shuffle等操作都是和standaloe一样

等到所有的任务执行完毕后,AM 向 ASM 取消注册并释放资源

yarn-client

在yarn-client模式下,Driver运行在Client上,通过ApplicationMaster向RM获取资源。本地Driver负责与所有的executor container进行交互,并将最后的结果汇总。

整体的过程与yarn-cluster类似。

不同点在于 Driver 是运行在本地客户端,它的 AM 只是作为一个 Executor 启动器,并没有 Driver 进程。

而且 Executor启动后是与 Client 端的 Driver 进行交互的,所以 Client 如果挂了 任务也就挂了。

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值