Spark YARN Cluster和Client两种不同提交模式区别:

Spark YARN Cluster和Client两种不同提交模式区别

文章目录

  • Spark YARN Cluster和Client两种不同提交模式区别
    • Spark使用spark-submit启动应用程序
    • deploy-mode选项有两种常见的部署策略:
  • YARN Cluster和Client两种不同提交模式详细区别
    • 1.驱动程序位置:
    • 2.资源分配:
    • 3.监控和管理:
    • 4.适用场景:
    • 5.运行环境:
    • 6.集群资源利用率:
    • 7.任务提交方式:
    • 8.任务执行方式:
    • 9.运行方式:
    • 10.容错性:
    • 11.安全性:
    • 12.资源管理和调度方式:
  • 参考链接

Spark使用spark-submit启动应用程序

一旦用户应用程序被打包,就可以使用bin/spark-submit脚本来启动它。该脚本会设置Spark及其依赖项的类路径,并支持Spark支持的不同集群管理器和部署模式:

./bin/spark-submit \
  --class class> \
  --master  \
  --deploy-mode  \
  --conf = \
  ... # 其他选项
   \
  [application-arguments]

一些常用的选项包括:

  • --class:指定应用程序的入口点(例如org.apache.spark.examples.SparkPi)。
  • --master:指定集群的主节点URL(例如spark://23.195.26.187:7077)。
  • --deploy-mode:指定驱动程序在工作节点上部署时的模式,可以是cluster(默认)或client
  • --conf:以key=value格式指定任意的Spark配置属性。如果值包含空格,请使用引号将"key=value"括起来。
  • application-jar指定打包的JAR文件路径,包含您的应用程序和所有依赖项。URL必须在集群内的所有节点上都可见,可以是hdfs://路径或所有节点上存在的file://路径。
  • application-arguments:传递给主类的主方法的参数,如果有的话。

deploy-mode选项有两种常见的部署策略:

  • 如果从与工作节点物理上相邻的网关机器(例如独立EC2集群中的主节点)提交应用程序,则适用于client模式。在**client**模式下,驱动程序直接在spark-submit进程中启动,spark-submit进程充当集群的客户端。应用程序的输入和输出会附加到控制台。因此,这种模式特别适合涉及REPL(例如Spark shell)的应用程序。
  • 或者,如果应用程序是从远离工作节点的机器(例如本地笔记本电脑)提交的,则通常使用**cluster**模式以最小化驱动程序和执行器之间的网络延迟。目前,独立模式不支持Python应用程序的集群模式。

YARN Cluster和Client两种不同提交模式详细区别

1.驱动程序位置:

  • 在YARN-Cluster模式下,驱动程序运行在集群中的某个节点上,由YARN资源管理器来管理和监控。
  • 在YARN-Client模式下,驱动程序运行在提交应用程序的客户端机器上,并通过客户端来监控和管理应用程序的执行过程。

2.资源分配:

  • 在YARN-Cluster模式下,资源由YARN资源管理器自行分配和管理。驱动程序向资源管理器请求资源,并由资源管理器负责启动Executor进程并分配计算资源。
  • 在YARN-Client模式下,资源由客户端向YARN资源管理器请求。驱动程序首先向资源管理器注册应用程序,并由客户端协调Executor的启动和资源分配。

3.监控和管理:

  • 在YARN-Cluster模式下,YARN资源管理器负责监控和管理应用程序的执行过程。它会跟踪任务状态、资源使用情况等,并提供相应的监控接口。
  • 在YARN-Client模式下,客户端通过与YARN资源管理器通信来监控应用程序的执行过程。客户端可以获取应用程序的状态、任务进度等信息,并进行相应的管理操作。

4.适用场景:

  • YARN-Cluster模式适用于需要在YARN集群上运行Spark应用程序的场景。该模式下,资源管理和任务调度完全由YARN负责,适合大规模的分布式计算。
  • YARN-Client模式适用于需要通过客户端来监控和管理应用程序执行过程的场景。该模式下,客户端可以更灵活地控制应用程序的执行,并及时获取执行结果。

5.运行环境:

  • 在YARN-Cluster模式下,驱动程序和Executor运行在YARN集群的容器中,它们共享同一份环境配置,如类路径、环境变量等。
  • 在YARN-Client模式下,驱动程序运行在客户端机器上,Executor运行在YARN集群的容器中。因此,驱动程序和Executor可以具有不同的运行环境配置。

6.集群资源利用率:

  • 在YARN-Cluster模式下,Spark应用程序与其他基于YARN的应用程序共享集群资源。这样可以更好地利用集群资源,但也可能导致资源竞争。
  • 在YARN-Client模式下,Spark应用程序独占客户端机器上的资源,不与其他应用程序共享。这样可以避免资源竞争,但可能导致客户端机器负载较重。

7.任务提交方式:

  • 在YARN-Cluster模式下,应用程序的提交是通过将应用程序的JAR包上传到HDFS,并通过指定主类名来启动应用程序。
  • 在YARN-Client模式下,应用程序的提交是通过将应用程序的JAR包传输到客户端机器,并通过命令行工具或API来启动应用程序。

8.任务执行方式:

  • 在YARN-Cluster模式下,驱动程序和Executor在不同节点上运行,它们通过网络进行通信。这可能会导致一些额外的网络开销和延迟。
  • 在YARN-Client模式下,驱动程序和Executor可以在相同的节点上运行,它们之间的通信可以通过本地进程间通信(IPC)进行,因此可以获得更低的通信延迟和更高的性能。

9.运行方式:

  • 在YARN-Cluster模式下,应用程序提交后,驱动程序会一直运行直到应用程序结束或被终止。这意味着驱动程序需要始终保持运行状态。
  • 在YARN-Client模式下,应用程序提交后,驱动程序只负责启动应用程序,并在启动完成后退出。这意味着驱动程序不需要一直保持运行状态。

10.容错性:

  • 在YARN-Cluster模式下,由于驱动程序运行在集群中的某个节点上,如果该节点发生故障,整个应用程序可能会失败。但是,YARN会自动尝试重新启动失败的任务。
    • 在YARN-Client模式下,由于驱动程序运行在客户端机器上,如果客户端机器发生故障,应用程序可能会中断。但是,可以通过将驱动程序和Executor分别运行在不同的客户端机器上来提高容错性。

11.安全性:

  • 在YARN-Cluster模式下,驱动程序和Executor运行在集群中的容器中,它们共享相同的用户身份和权限。这可以方便地控制和管理资源的访问权限。
  • 在YARN-Client模式下,驱动程序运行在客户端机器上,Executor运行在集群中的容器中。因此,需要确保客户端机器和集群之间的通信是安全的,并且能够正确验证和授权用户身份。

12.资源管理和调度方式:

  • 在YARN-Cluster模式下,资源管理和调度由YARN资源管理器负责,它根据配置的调度策略对任务进行资源分配和调度。
  • 在YARN-Client模式下,资源管理和调度主要由客户端来协调。客户端通过与YARN资源管理器通信,请求资源并启动Executor进程。

参考链接

小军李:在YARN上启动Spark任务原理用法官方权威资料

小军李:Spark 集群模式概述

小军李:Spark on k8s如何在Kubernetes运行官方权威资料

小军李:Spark提交任务官网权威指南详解(建议收藏)

你可能感兴趣的:(spark,大数据,spark,大数据,分布式)