yarn-cluster 和 yarn-client 区别


1. 介绍

我们都知道spark支持在yarn上运行,但是spark on yarn 又分为两种模式,yarn-cluster和yarn-client,它们究竟有什么区别与关联呢?

spark支持可插拔的集群管理模式(standalone, mesos, yarn ), 集群管理负责启动Executor进程, 编写spark Application的人根本不需要知道spark用的是什么集群管理, spark支持的三种集群模式都是由两个组件组成的:master和slave。

master服务(yarn resourceManager、 mesos master 和 spark standalone master) 可以决定哪些Application可以运行, 什么时候运行以及去哪里运行, 而slave服务(yarn nodeManager、 mesos slave 和 spark standalone slave)实际上运行Executor进程。

当在yarn上面运行spark作业, 每个sparkExecutor 作为一个yarn容器(container)运行,spark可以使得多个tasks 在同一容器(Executor)里面运行, 这是个很大的优点。

注意:这里和Hadoop的mapreduce作业不一样,mapreduce 作业每个task开启不同的jvm来运行,虽然说mapreduce可以通过参数来配置(mapreduce.job.jvm.numtasks)

从广义上讲:

yarn-cluster适用于生产环境

yarn-client适用于交互和调试,也就是希望快速地看到Application的输出

在我们介绍yarn-cluster和yarn-Client的深层次的区别之前, 我们先明白一个概念Application master。 在yarn中每个Application实例都有一个Application master进程, 它是Application启动的第一个容器, 它负责和resourceManager打交道并请求资源,获得资源之后告诉nodeManager为其启动container。

从深层次的含义讲:yarn-cluster 和yarn-Client模式的区别其实就是Application的区别。

  • yarn-cluster模式下, driver运行在AM(Application Master)中,它负责向yarn申请资源,并监督作业的运行状况,当用户提交了作业之后,就可以关掉Client,作业会继续在yarn上运行,所以yarn-cluster模式不适合运行交互类型的作业。
  • yarn-client模式下, Application master 仅仅向yarn请求Executor, Client会和请求的container通信来调度他们的工作, 也就是说Client不能离开, 看下面的两幅图应该就会明白。

2. Yarn-cluster 模式下作业执行流程

  1. 客户端生成作业提交给resourceManager。
  2. ResourceManager在某个nodeManager(由yarn决定) 启动container 将Application Master分配给nodeManager
  3. nodeManager接收到ResourceManager 的分配, 启动Application Master并初始化作业, 此时的NameNode 就称为Driver
  4. Application向ResourceManager申请资源,分配资源同时通知其他NodeManager启动相应的Executor
  5. Executor向NameNode上的Application Master注册汇报并完成相应的任务

Yarn-cluster 模式下作业执行流程

3. Yarn-client 模式下作业执行流程

  1. 客户端生成作业信息提交给ResourceManager
  2. ResourceManager在本地NodeManager启动container 并将Application 分配给该NodeManager
  3. Nodemanager接收到ResourceManager的分配 ,启动Application Master初始化作业,此时NameManager就称为Driver
  4. Application 向ResourceManager申请资源, 分配资源的同时 通知其他NodeManager启动相应的Executor
  5. Executor向本地启动Application Master 注册汇报并完成相应任务

Yarn-client 模式下作业执行流程

4. Spark Standalone 与on yarn模式比较

Yarn-cluster Yarn client Spark standalone
Driver 运行在: Application Master Client Client
谁去请求资源 Application Master Application Master client
谁去启动Executor进程 Yarn NodeManager Yarn NodeManager spark Slave
持久性服务 Yarn ResourceManager
Yarn NodeManager
Yarn ResourceManager
Yarn NodeManager
spark master
workers
是否支持spark shell 不支持 支持 支持

文章作者: hnbian
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 hnbian !
评论
 上一篇
SparkSQL读取Excel数据源——spark-excel SparkSQL读取Excel数据源——spark-excel
在Github上面看到一个针对SparkSQL加载Excel数据源的开源组件,拿过来测试了一下spark-excel 1.Spark Excel库用于使用Apache Spark查询Excel文件的库,用于Spark SQL和DataFra
2019-12-13
下一篇 
HBase节点时间不同步导致的异常 HBase节点时间不同步导致的异常
1. 背景今早来公司发现HBase集群异常,看日志发现HMaster与一个RegionServer连接失败,于是找一下什么原因。 2. 问题日志RegionServer 日志 2019-11-28 10:01:26,051 INFO [r
2019-11-28
  目录