Spark运行模式及Spark on Yarn两种运行模式的区别

如果觉得这篇文章对您有帮助,别忘了点赞、分享或关注哦!您的一点小小支持,不仅能帮助更多人找到有价值的内容,还能鼓励我持续分享更多精彩的技术文章。感谢您的支持,让我们一起在技术的世界中不断进步!

Spark运行模式
1. Standalone模式
  • 描述:Standalone模式是Spark的独立集群模式,Spark自己管理资源和调度任务。适合小型集群或个人开发环境。
  • 特点
    • 简单易用,适合开发和测试。
    • 不依赖外部资源管理器。
    • 可以运行在单机或多机集群上。
2. YARN模式
  • 描述:YARN(Yet Another Resource Negotiator)是Hadoop的资源管理器,Spark可以运行在YARN集群上,使用Hadoop的资源管理功能。
  • 特点
    • 适合Hadoop生态系统中的Spark应用。
    • Spark作业可以和其他Hadoop作业共享集群资源。
    • 支持动态资源调度。
3. Mesos模式
  • 描述:Mesos是一个开源的集群管理器,支持多种类型的工作负载,Spark可以作为Mesos的一个框架运行。
  • 特点
    • 支持多种不同的作业类型,Spark作业可以与其他类型的任务共享Mesos集群资源。
    • 提供精细的资源隔离和调度功能。
4. Local模式
  • 描述:Local模式是Spark的单机模式,用于在本地机器上运行Spark应用程序,适合开发和测试。
  • 特点
    • 仅在单个机器上运行,不涉及集群。
    • 适合开发阶段和小规模测试,方便调试。

Spark on Yarn

Spark on YARN模式中,Spark应用程序通过YARN资源管理器来管理集群资源。YARN提供了以下两种主要的运行模式:

1. Client模式(Client Mode)

Client模式下,Driver运行在提交作业的客户端机器上,而Executor则运行在YARN集群的各个节点上。

  • Driver:运行在客户端(即提交作业的机器)上,客户端负责启动应用程序的main函数,并保持与YARN集群的连接。客户端通过YARN
    ResourceManager与集群进行通信,负责分配和监控任务。
  • Executor:运行在YARN集群中的各个工作节点上,每个Executor负责执行分配的任务,并将计算结果返回给Driver。
    特点
    • 适用场景:适合开发和调试时使用,因为Driver运行在本地,开发者可以方便地调试和查看日志。
    • 资源管理:虽然Executor在YARN集群上运行,但Driver的资源是由客户端管理的,所有的交互和调度都由客户端发起。
    • 网络连接要求:需要客户端与YARN集群之间有良好的网络连接,尤其是当Driver在远程机器上运行时,客户端必须能够访问集群。

启动方式

spark-submit --master yarn --deploy-mode client --class <main-class> <your-spark-application>
2. Cluster模式(Cluster Mode)

Cluster模式下,Driver会被调度到YARN集群中的一个节点上运行,而不是在客户端运行。

  • Driver:在YARN集群内的一个工作节点上启动,YARN ResourceManager负责为Driver分配资源并启动它。Driver的启动不依赖于客户端,完全由YARN集群管理。
  • Executor:和Client模式一样,Executor运行在YARN集群中的各个工作节点上,每个Executor负责执行分配的任务。

特点

  • 适用场景:适用于生产环境,特别是当Spark作业需要长期运行或需要集群资源时。因为Driver运行在集群中,作业提交和执行可以在完全分布式的环境下进行。
  • 资源管理:Driver的资源由YARN集群管理,集群资源的调度和分配更加高效,适合大规模的数据处理。
  • 网络连接要求:由于Driver运行在YARN集群中,客户端和集群之间的网络连接不需要持久化连接,客户端仅负责提交作业。

启动方式

spark-submit --master yarn --deploy-mode cluster --class <main-class> <your-spark-application>
3.Client和Cluster模式的区别

1. Driver 的存储位置

  • Client 模式: Driver 运行在提交作业的本地机器上,负责 Spark 应用程序的调度和任务分配。
  • Cluster 模式: Driver 运行在 YARN 的 NodeManager 上,具体由 YARN 的 ApplicationMaster 负责启动并管理。

2. 流量问题

  • Client 模式: 由于 Driver 运行在本地机器上,所有任务调度和数据的中间结果需要通过网络回传给本地 Driver,容易导致本地机器流量激增,尤其是数据量较大时。
  • Cluster 模式: Driver 和 YARN 集群运行在一起,调度和数据传输均在集群内部完成,因此不存在流量激增问题

3. 网络连接问题

  • Client 模式: Driver 运行在本地机器,与 YARN 集群可能不在同一个机房或网络区域,容易因为网络延迟或不稳定导致作业失败,特别是在 Driver 与 Executor 的通信中。
  • Cluster 模式: Driver 与 YARN 集群的 NodeManager 运行在相同机房内,网络延迟低且更稳定,不易因网络问题导致作业中断。
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
发出的红包

打赏作者

DataCrafter

你的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值