Spark概述
Spark 可以在多种不同的运行模式下执行,每种模式都有其自身的特点和适用场景。
部署Spark集群大体上分为两种模式:单机模式与集群模式。大多数分布式框架都支持单机模式,方便开发者调试框架的运行环境。但是在生产环境中,并不会使用单机模式。
Spark目前支持的部署模式。
-
(1)
Local
模式:在本地部署单个Spark服务 -
(2)
Standalone
模式:Spark自带的任务调度模式。(国内不常用) -
(3)
YARN
模式:Spark使用Hadoop的YARN组件进行资源与任务调度。(国内最常用)
-
(4)
Mesos
模式:Spark使用Mesos平台进行资源与任务的调度。(国内很少用)
1.Local 模式
- 在本地模式下,Spark 将在单个 JVM 进程中运行,通常用于开发、测试和小规模数据处理。
- 在本地模式下,Spark 不需要启动集群,而是直接在本地计算机上执行任务。
2.YARN 模式(常用)
-
YARN(Yet Another Resource Negotiator)
是 Apache Hadoop 的资源管理器,可以用来在 Hadoop 集群上管理资源和调度任务。 -
Spark 可以作为 YARN 上的一个应用程序运行,在 YARN 模式下,Spark 将利用 YARN 来管理集群资源和调度任务。
在 Spark 中,YARN 模式下有两种常见的运行模式:yarn-client 和 yarn-cluster。它们的主要区别在于 Driver 程序的运行节点。
(1)yarn-client
模式
- 在
yarn-client
模式下,Driver 程序运行在提交 Spark 应用程序的客户端机器上。 - 这意味着 Driver 程序直接与 YARN ResourceManager 通信,并向其请求资源并启动 ApplicationMaster。
- 一旦 ApplicationMaster 启动成功,它会协调在 YARN 集群中启动的 Executor 进程,并与它们通信以执行任务。
yarn-client 模式的优点是方便调试和监控,因为 Driver 程序直接运行在客户端机器上,可以直接查看其日志并与其交互。
然而,由于 Driver 程序运行在客户端机器上,它可能会成为性能瓶颈,尤其是当客户端机器的资源有限时。
(2)yarn-cluster
模式:
- 在
yarn-cluster
模式下,Driver 程序运行在 YARN 集群中作为一个独立的应用程序。 - 当用户提交 Spark 应用程序时,Driver 程序会作为一个 YARN ApplicationMaster 启动在集群中,并由 YARN ResourceManager 分配资源。
- 一旦 ApplicationMaster 启动成功,它会协调在集群中启动的 Executor 进程,并与它们通信以执行任务。
yarn-cluster 模式的优点是可以更好地利用集群资源,并且 Driver 程序不会成为单点故障。
因为 Driver 程序运行在集群中,所以即使客户端机器宕机也不会影响 Spark 应用程序的执行。
但是,调试和监控会稍微复杂一些,因为 Driver 程序运行在集群中,需要查看集群中的日志和监控信息。
yarn-client 模式适用于调试和监控要求较低、资源较为充足的情况,而 yarn-cluster 模式适用于对资源利用率和容错性要求较高的情况。
3.Standalone 模式
- Spark 的独立模式是一种简单的集群管理器,可以用来在独立的 Spark 集群上运行应用程序。在这种模式下,用户需要手动启动和管理 Spark 集群中的各个组件,如主节点和工作节点。
- Standalone模式是Spark自带的资源调度引擎,构建一个由Master + Worker构成的Spark集群,Spark运行在集群中。
- 这个要和Hadoop中的Standalone区别开来。这里的Standalone是指只用Spark来搭建一个集群,不需要借助Hadoop的Yarn和Mesos等其他框架。
4.Apache Mesos 模式:
- Apache Mesos 是一个通用的集群管理器,可以用来管理多种类型的工作负载,包括 Spark 应用程序。
- 在 Mesos 模式下,Spark 可以作为 Mesos 上的一个框架运行,利用 Mesos 提供的资源管理和调度功能来运行任务。
- Spark客户端直接连接Mesos;不需要额外构建Spark集群。国内应用比较少,更多的是运用Yarn调度。