Spark On Yarn 的两种模式

在Spark StandLone模式中,一个 Worker 只能运行一个 Application 所属的一个 Executor,而不同的 Application 的 Executor 可以运行在一台 Worker 上。

Spark On Yarn 

每个Executor作为YARN容器(container)运行,Spark可以使得多个Tasks在同一个容器(container)里运行。

Yarn可以自由选择Executor的数量。

 

Spark On Yarn Cluster

  • Spark Yarn Client向YARN中提交应用程序,包括ApplicationMaster程序、启动ApplicationMaster的命令、需要在Executor中运行的程序等
  • ResourceManager收到请求后,在集群中选择一个NodeManager,为该应用程序分配第一个Container,要求它在这个Container中启动应用程序的ApplicationMaster,其中ApplicationMaster进行SparkContext等的初始化
  • ApplicationMaster向ResourceManager注册,这样用户可以直接通过ResourceManage查看应用程序的运行状态,然后它将采用轮询的方式通过RPC协议为各个任务申请资源,并监控它们的运行状态直到运行结束
  • 一旦ApplicationMaster申请到资源(也就是Container)后,便与对应的NodeManager通信,要求它在获得的Container中启动CoarseGrainedExecutorBackend,而Executor对象的创建及维护是由CoarseGrainedExecutorBackend负责的,CoarseGrainedExecutorBackend启动后会向ApplicationMaster中的SparkContext注册并申请Task。这一点和Standalone模式一样,只不过SparkContext在Spark Application中初始化时,使用CoarseGrainedSchedulerBackend配合YarnClusterScheduler进行任务的调度,其中YarnClusterScheduler只是对TaskSchedulerImpl的一个简单包装,增加了对Executor的等待逻辑等
  • ApplicationMaster中的SparkContext分配Task给CoarseGrainedExecutorBackend执行,CoarseGrainedExecutorBackend运行Task并向ApplicationMaster汇报运行的状态和进度,以让ApplicationMaster随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务
  • 应用程序运行完成后,ApplicationMaster向ResourceManager申请注销并关闭自己

Spark On Yarn Client

  • 客户端提交一个Application,在客户端启动一个Driver进程。
  • Driver进程会向ResourceManager发送请求,启动ApplicationMaster的资源。
  • ResourceManager收到请求,随机选择一台NodeManager,然后该NodeManager到HDFS下载jar包和配置,接着启动ApplicationMaster【ExecutorLuacher】。这里的NodeManager相当于Standalone中的Worker节点。
  • ApplicationMaster启动后,会向ResourceManager请求一批container资源,用于启动Executor.
  • ResourceManager会找到一批符合条件NodeManager返回给ApplicationMaster,用于启动Executor。
  • ApplicationMaster会向NodeManager发送请求,NodeManager到HDFS下载jar包和配置,然后启动Executor。
  • Executor启动后,会反向注册给Driver,Driver发送task到Executor,执行情况和结果返回给Driver端

Yarn-cluster 和 yarn-client 的区别就是 Yarn-Cluster 的 Driver端 是在集群节点中最忌选取启动,Yarn-Client 的 Driver端是在任务提交的客户端中启动的。

一般情况下都是使用Cluster模式。但是Spark-Shell、Spark-Sql必须采用Client模式

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值