Spark on Yarn的运行流程,以及两种模式的对比

Spark on Yarn的运行流程,以及两种模式的对比

  • Yarn组件简介
  • Spark组件
  • SPARK ON YARN
  • 区别

Yarn组件简介

  1. ResourceManager:负责整个集群的资源管理和资源分配
  2. NodeManager:每个节点的资源和任务的管理器,负责启动和停止Container,并监视资源使用情况
  3. ApplicationMaster:Yarn中每个Application对应一个AM进程,获取资源后告诉NodeManager为其分配并启动Container
  4. Container:Yarn中的抽象资源

Spark组件

Spark中的组件就不介绍了如果不了解可以参考spark运行原理及各个组件

SPARK ON YARN

  • yarn-cluster模式
    Spark on Yarn的运行流程,以及两种模式的对比_第1张图片
  1. 在RM接受到申请后在集群中选择一个NM分配Container,并在Container中启动ApplicationMaster进程
  2. 在ApplicationMaster中初始化SparkContext
  3. ApplicationMaster向RM申请到Container后通知NodeManager在获得的Container中启动Executor进程
  4. sparkContext分配Task给Executor,Executor发送运行状态给Driver
  • yarn-client模式
    Spark on Yarn的运行流程,以及两种模式的对比_第2张图片
  1. 在RM接受到申请后在集群中选择一个NM分配Container,并在Container中启动ApplicationMaster进程
  2. driver进程运行在client中,并初始化sparkContext
  3. sparkContext初始化完成后与ApplicationMaster通讯,通过ApplicationMaster向RM申请Container,ApplicationMaster通知NM在获得的Container中启动executor
  4. sparkContext分配Task给Executor,Executor发送运行状态给Driver

区别

  1. SparkContext初始化不同,这也导致了Driver所在位置的不同,Yarn-Cluster的Driver是在集群的某一台NM上,Yarn-Client 的Driver运行在客户端
  2. 而Driver会和Executors进行通信,这也导致了Yarn-Cluster在提交App之后可以关闭Client,而Yarn-Client不可以
  3. 最后再来说应用场景,Yarn-Cluster适合生产环境,Yarn-Client适合交互和调试

你可能感兴趣的:(spark)