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模式

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spark on YARN两种处理模式,分别是Client模式和Cluster模式。 1. Client模式: 在Client模式下,Spark应用程序的驱动程序运行在提交应用程序的客户端机器上。客户端向YARN ResourceManager提交应用程序,并且将应用程序的JAR包和依赖文件分发到集群的NodeManager上。然后,驱动程序启动一个SparkContext来与集群通信,并在集群上分配和管理任务。这种模式下,驱动程序负责监控应用程序的执行过程和收集结果。 优点: - 可以方便地在客户端机器上查看应用程序的日志和输出结果。 - 对于开发和调试应用程序来说比较方便,可以快速获取反馈。 缺点: - 如果客户端机器断开连接或关闭,驱动程序也会停止运行。 - 客户端机器的资源会被使用来运行驱动程序,可能会影响到其他任务的执行。 2. Cluster模式: 在Cluster模式下,Spark应用程序的驱动程序运行在YARN集群中的某个节点上。客户端只需要向YARN ResourceManager提交应用程序,并将应用程序的JAR包和依赖文件分发到集群的NodeManager上。然后,驱动程序在集群中的某个节点上启动一个SparkContext来与集群通信,并在集群上分配和管理任务。这种模式下,驱动程序不受客户端机器断开连接的影响。 优点: - 驱动程序运行在集群中,不会受到客户端机器的限制。 - 可以更好地利用集群资源,提高任务的并行度和整体执行性能。 缺点: - 对于开发和调试应用程序来说相对麻烦,需要通过查看集群日志来获取反馈。 - 不方便查看应用程序的日志和输出结果,需要通过其他方式获取。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值