Spark部署模式介绍

本文详细介绍了Spark的五种部署模式:Local模式适合开发测试,Local-Cluster用于代码调试,Standalone模式为独立集群,YARN提供集群资源管理,包括yarn-cluster和yarn-client两种模式,Mesos则提供了粗粒度和细粒度两种调度模式。每种模式的特点和应用场景都有所不同,帮助读者理解Spark的部署策略。

一、Local

Local 模式是最简单的一种运行方式,它采用单节点多线程方式运行,不用部署,开箱即用,适合日常测试开发。在 shell 中有如下几种参数配置:

  • local:只启动一个工作线程;
  • local[k]:启动 k 个工作线程;
  • local[*]:启动跟 cpu 数目相同的工作线程数。

二、Local-Cluster

Local-Cluster 为本地集群模式,类似于 hadoop 的伪分布式,其主要用于代码调试和测试,是源码学习常用的模式。不具备容错能力,不能用于生产环境。Driver、Master 与 Worker 运行在同一个 JVM 进程中。每个 Worker 可启动多个 Executor,每个 Executor 都是一个 JVM 进程。

三、Standalone

这是 spark 最常见的集群模式,即独立模式,自带完整的服务,可单独部署到一个集群中,无需依赖任何其他资源管理系统。Driver 在集群之外,可以是任意的客户端程序。Master 部署于单独的进程,一般在单独的机器上,可以有多个,但只能有一个处于激活状态(借助 Zookeeper 可以搭建高可用的 spark 集群)。Worker 部署于单独的进程,一般在单独的机器上部署。

四、YARN

就是将 spark 的资源管理放在 yarn 上来完成,现在 spark on yarn 有两种模式:
1、yarn-cluster:适用于生产环境
2、yarn-client:适用于交互、调试、希望立即看到 app 的输出

两者的区别:
yarn-client模式:
1、Application Master 仅仅向 YARN 请求 executor,client 会和请求的 container通信来调度他们工作(运行在本地)
2、Client不能离开<

### Spark 部署模式详解 #### 1. **Spark 部署模式概述** Spark 支持多种部署模式,这些模式决定了 Spark 应用程序如何在不同的环境中运行。具体来说,部署模式影响着 Driver 程序的位置以及与 Executor 的通信方式[^1]。用户可以通过 `--master` 参数指定集群管理器类型(如 Local、Standalone、YARN),并通过 `--deploy-mode` 参数选择具体的部署模式(Client 或 Cluster)。 --- #### 2. **Local 模式** Local 模式是一种单机运行模式,适用于测试和调试场景。在这种模式下,所有的 Spark 组件(Driver 和 Executor)都运行在同一 JVM 进程中,无需分布式环境的支持。此模式通常用于开发阶段或小型任务的验证。 ```bash # 启动 Local 模式的命令示例 spark-submit --class org.apache.spark.examples.SparkPi \ --master local[*] \ /path/to/spark-examples.jar ``` --- #### 3. **Standalone 模式** Standalone 模式Spark 自带的独立集群管理模式。在此模式下,集群由 Master 节点和多个 Worker 节点组成。Master 负责资源管理和调度,Worker 则负责运行具体的 Task。这种模式适合专用集群环境下的简单配置需求[^5]。 --- #### 4. **YARN 模式** YARN 是 Hadoop 提供的一种通用资源管理系统,Spark 可以很好地与其集成。YARN 上的 Spark 部署有两种主要模式:Client 模式和 Cluster 模式。 ##### (1)**Client 模式** 在 Client 模式下,Driver 程序运行在提交作业的客户端机器上,而 Executors 则分布在 YARN 集群中的各个 NodeManager 上。这种方式的优点是可以让 Driver 更加接近用户的交互环境,便于实时监控和调试;然而,这也可能导致客户端网络负载增加,尤其是在大规模数据传输时[^3]。 ##### (2)**Cluster 模式** Cluster 模式下,Driver 程序被分配到 YARN 集群内部的一个节点上运行,而非客户端本身。这样可以减少客户端与集群间的通信开销,并提高系统的稳定性。不过,由于 Driver 不再位于本地,因此无法直接通过终端查看日志,需借助 Web UI 或其他工具[^4]。 --- #### 5. **Mesos 模式** 类似于 YARN,Apache Mesos 也是一种流行的资源调度框架,同样支持两种部署模式:Coarse-grained 和 Fine-grained。其中 Coarse-grained 类似于 YARN 的 Cluster 模式,Fine-grained 则更贴近动态资源共享的需求。 --- #### 6. **对比总结** | 部署模式 | Driver 所在位置 | 数据传输特点 | 使用场景 | |----------------|------------------------|---------------------------------|-----------------------| | Local | 单一 JVM | 无分布 | 测试/调试 | | Standalone | 客户端或集群内部 | 根据 Deploy Mode 决定 | 小型专用集群 | | YARN (Client) | 客户端 | 较高网络流量 | 实时交互 | | YARN (Cluster) | 集群内部 | 减少跨网络传输 | 生产环境 | | Mesos | 动态调整 | Flexibility | 多租户共享环境 | --- ### 示例代码 以下是一个典型的 Spark Submit 命令,展示了如何设置不同部署模式: ```bash # YARN Client 模式 spark-submit --class com.example.MyApp \ --master yarn \ --deploy-mode client \ /path/to/my-app.jar # YARN Cluster 模式 spark-submit --class com.example.MyApp \ --master yarn \ --deploy-mode cluster \ /path/to/my-app.jar ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值