[spark]本地模式和集群模式(介绍)

4 阅读3分钟

总的来说,Spark的运行模式可以分为两大类:本地模式集群模式。而“伪集群”通常是集群模式的一种特定部署形式。

下面我为你详细梳理一下:

1. 本地模式

  • 核心概念:所有Spark进程(Driver、Executor)都运行在单个JVM中,仅利用一台机器的资源。
  • 特点
    • 没有分布式计算,只是一个多线程程序。
    • 主要用于开发、调试、学习和单元测试
    • 配置简单,无需启动任何集群服务。
  • 常见写法:在代码或spark-shell/spark-submit中指定 masterlocallocal[K]local[*]
    • local: 使用1个线程。
    • local[4]: 使用4个线程模拟4个核心。
    • local[*]: 使用机器上所有可用的逻辑核心。

2. 集群模式

Spark应用程序的Driver和Executor运行在多台机器组成的集群中,真正实现了分布式计算。它主要依赖于一个外部的“集群管理器”来分配资源。根据集群管理器的不同,可以分为以下主要类型:

a) Standalone 模式
  • 这是Spark内置的一个简单的集群管理器。
  • “伪集群”通常指的就是这种模式在单机上的部署:在一台机器上启动Master进程和多个Worker进程,模拟多节点集群的行为。它仍然是集群架构,但所有节点都在同一台物理机上。
  • 真集群:在多台物理机或虚拟机上部署,每台机器运行Worker进程,由一台机器运行Master进程。
  • 特点:部署相对简单,无需依赖其他框架,适合单纯使用Spark的场景。
b) Apache YARN 模式
  • Spark运行在Hadoop YARN资源管理器之上。YARN负责集群的资源管理和调度,Spark作为YARN上的一个应用客户端。
  • 这是生产环境中Hadoop生态圈里最常用的模式。
  • 集群本身就是由YARN管理的真集群。
c) Apache Mesos 模式
  • Spark运行在Mesos集群管理器之上。Mesos是一个通用的集群资源管理平台。
  • 现在用的相对较少。
d) Kubernetes 模式
  • Spark在Kubernetes容器编排平台上原生运行。Driver和Executor都作为Kubernetes Pod运行。
  • 这是目前云原生架构下增长最快、越来越主流的模式。

3/概念关系梳理与对比

为了更直观,你可以这样看:

模式大类具体类型管理角色“伪”/“真”主要用途
本地模式local[*]无(单JVM)单机非集群学习、开发、测试
集群模式StandaloneSpark Master/Worker可伪(单机多进程)可真独立Spark集群,简单生产环境
YARNHadoop YARN ResourceManager真集群Hadoop生态生产环境
KubernetesKubernetes Master真集群云原生、容器化生产环境
MesosMesos Master真集群通用集群(历史选择)

4/总结与建议

你的理解路线是对的:

  1. 本地模式:单机跑,非分布式。
  2. 集群模式:多机(或多进程)分布式跑。
    • 伪集群:特指在一台机器上用多个进程(如Standalone模式)模拟分布式环境。它是一个真架构,伪分布的部署形态。
    • 真集群:指资源(CPU、内存)真正分布在多台物理机/虚拟机上的集群环境。

学习路径建议

  • 入门:从 local 模式开始,用spark-shell练习。
  • 加深理解:在单机上部署 Standalone伪集群,了解Master、Worker、Driver、Executor的概念和日志。
  • 生产实践:学习在YARNKubernetes上提交Spark作业,这才是企业级应用的核心。

所以,你的理解“Spark有本地模式和集群模式,集群模式还分伪集群和真集群”是抓住了精髓的,只是要知道“伪集群”更多是部署形态上的说法,核心架构依然是集群模式。