大数据,机器学习,人工智能Hadoop大数据

Spark:三种任务提交流程standalone、yarn-cl

2019-07-09  本文已影响7人  利伊奥克儿

spark的runtime
参考:Spark:Yarn-cluster和Yarn-client区别与联系

standalone

Spark可以通过部署与Yarn的架构类似的框架来提供自己的集群模式。
该集群模式的架构设计与HDFS和Yarn大相径庭,都是由一个主节点多个从节点组成。
在Spark 的Standalone模式中:
主:为master
从:为worker

任务提交流程:

  1. spark-submit 提交任务给 Master
  2. Master 收到任务请求后通过 LaunchDriver 向 Worker 请求启动 Driver
  3. Worker 收到请求后启动 Driver
  4. Driver 启动后向 Master 注册(用户App信息)
  5. Master 收到 App 信息后根据资源的情况向 Worker 发送 launchExecutor 启动 Excutor
  6. Worker 收到 Master 的请求后启动相应的 Excutor
  7. Excutor 启动后负责与 Driver 通信, 执行相关任务
(A3918569477848ACA78074F063CDDBAB)![作业提交流程].png

Spark on Yarn


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

  1. ASM 向 Scheduler 申请空闲 container
  2. Scheduler 向 ASM 返回空闲 container 信息(NM 等)
  3. RM(ASM)根据返回信息向 NM 申请资源。
  4. NM 分配创建一个container 并创建Spark Application Master(AM),此时 AM 上运行的是 Spark Driver。(每个SparkContext都有一个 AM)
  5. AM启动后,和RM(ASM)通讯,请求根据任务信息向RM(ASM)申请 container 来启动 executor
  6. RM(ASM)将申请到的资源信息返回给AM
  7. AM 根据返回的资源信息区请求对应的 NM 分配 container 来启动 executor
  8. NM 收到请求会启动相应的 container 并启动 executor
  9. executor 启动成后 反向向 AM 注册
  10. executor 和 AM 交互 完成任务
  11. 后续的DAGScheduler、TaskScheduler、Shuffle等操作都是和standaloe一样
  12. 等到所有的任务执行完毕后,AM 向 ASM 取消注册并释放资源
yarn-cluster 作业提交流程.png
yarn-client 作业提交流程.png

在yarn-client、yarn-cluster 提交模式中,可以不启动Spark集群,应为相关的jvm环境有yarn管理(启动、结束等)。
standalone 提交模式中 Spark 集群一定要启动,因为需要依赖worker、Master进行任务的启动、调度等。

上一篇下一篇

猜你喜欢

热点阅读