码到成功
spark安装与部署

- 到底是装本地版,还是集群版?
- 必须先装 Hadoop 吗?
- Java 版本怎么选?
spark-shell能跑起来,算不算安装成功?- Docker 安装和源码包安装,分别适合什么场景?
这篇文章不讲复杂原理,重点围绕 Spark 的几种常见安装方式来写,目标只有一个:
让你知道在不同场景下,应该怎么把 Spark 正确装起来。
1. 先说结论:Spark 常见安装方式有哪些
实际工作和学习里,常见安装方式主要有这几种:
-
本地单机安装
适合个人学习、开发调试、写 Demo。 -
Standalone 集群安装
适合在几台机器上快速搭建 Spark 集群,结构相对简单。 -
基于 Hadoop YARN 的安装
适合企业里比较常见的大数据平台环境,通常会和 HDFS、YARN 一起使用。 -
Docker 安装
适合快速体验、做实验、做环境隔离,也适合本地统一开发环境。 -
云平台或托管环境
例如某些云厂商的大数据平台、Databricks、EMR 一类服务,这种严格来说不是“手工安装”,但也是非常常见的使用方式。
如果你只是想先学会 Spark,我建议优先走这条路径:
- 第一步:本地单机安装
- 第二步:Docker 安装体验集群化环境
- 第三步:再接触 YARN 或 Standalone 集群
2. 安装前必须确认的前置条件
不管你选哪种方式,Spark 安装前最好先确认下面几个前提。
2.1 Java 环境
Spark 运行依赖 JVM,所以必须先安装 JDK。
通常需要确认:
java -version能正常输出版本- 配置好
JAVA_HOME PATH中能找到java
示例:
java -version
echo $JAVA_HOME
如果这两步都不通,后面大概率会报:
JAVA_HOME is not setjava: command not found
2.2 Python 环境
如果你准备使用 PySpark,还需要有 Python 环境。
建议确认:
python3 --version
which python3
很多人装好了 Spark,却发现 pyspark 起不来,本质上不是 Spark 没装好,而是 Python 没配好。
2.3 Hadoop 不是必须,但很多场景会用到
这点很容易误解。
结论是:
- 学习 Spark,本地运行,不一定要先安装 Hadoop
- 如果要跑在 YARN 上,通常需要和 Hadoop 环境配合
- 如果只是本地读写本地文件,Spark 自己就能跑
也就是说,Spark 并不是“必须依赖完整 Hadoop 才能启动”,但在企业环境里,二者经常一起出现。
3. 方式一:本地单机安装
这是最常见、也最推荐的入门方式。
3.1 适用场景
- 学习 Spark 基本概念
- 调试 DataFrame / SQL / RDD 代码
- 本地跑小规模测试任务
- 搭建个人开发环境
3.2 安装思路
本地单机安装的核心步骤很简单:
- 安装 JDK
- 下载 Spark 二进制包
- 解压
- 配置环境变量
- 启动
spark-shell或pyspark验证
3.3 一个典型流程
假设你已经下载好了 Spark 压缩包并解压到:
/opt/spark
可以在 shell 配置中加入:
export SPARK_HOME=/opt/spark
export PATH=$SPARK_HOME/bin:$PATH
export JAVA_HOME=/path/to/jdk
然后执行:
spark-shell
或者:
pyspark
如果能正常进入交互环境,说明基础安装已经成功。
3.4 如何验证是否安装成功
可以直接执行一段简单代码:
Scala 方式:
val data = Seq(1, 2, 3, 4, 5)
val rdd = spark.sparkContext.parallelize(data)
rdd.count()
PySpark 方式:
data = [1, 2, 3, 4, 5]
rdd = spark.sparkContext.parallelize(data)
rdd.count()
如果返回 5,通常说明 Spark 基本可用。
3.5 优点和缺点
优点:
- 安装最简单
- 最适合学习
- 不依赖多台机器
- 出问题时好排查
缺点:
- 不能真实模拟复杂集群环境
- 对资源调度、分布式存储、集群提交的体验有限
4. 方式二:Standalone 集群安装
Spark 自带 Standalone 集群管理模式。
它不像 YARN 那么重,但足够搭一个标准的 Spark 集群。
4.1 适用场景
- 几台机器快速搭 Spark 集群
- 学习 Master / Worker 结构
- 中小规模实验环境
4.2 基本架构
Standalone 模式下,通常包括:
- 1 个 Master 节点
- 1 到多个 Worker 节点
Master 负责资源管理和任务调度,Worker 负责执行任务。
4.3 安装步骤概览
一般流程如下:
- 每台机器安装 JDK
- 每台机器部署 Spark
- 保证机器间网络互通
- 配置主机名或 IP
- 在 Master 上启动主节点
- 在 Worker 上连接 Master
4.4 常见配置文件
比较常接触的是:
conf/spark-env.shconf/workers
例如:
SPARK_MASTER_HOST=192.168.1.10
JAVA_HOME=/path/to/jdk
workers 文件中填写 Worker 节点列表:
worker1
worker2
worker3
4.5 启动方式
在 Master 节点上通常会用到:
sbin/start-master.sh
sbin/start-workers.sh spark://master-host:7077
启动后,通常可以通过 Spark Web UI 查看集群状态。
4.6 优点和缺点
优点:
- 比 YARN 更轻量
- 安装和理解成本相对低
- 适合教学、测试、实验
缺点:
- 企业里使用率通常不如 YARN / Kubernetes 常见
- 和现有 Hadoop 平台整合能力不如 YARN 自然
5. 方式三:基于 Hadoop YARN 的安装
这是企业环境里非常常见的一种方式。
5.1 适用场景
- 公司已经有 Hadoop 集群
- 希望 Spark 使用 YARN 做资源调度
- 作业要和 HDFS、Hive、Kerberos 等环境整合
5.2 这种方式到底是在“安装”什么
很多人容易把这个过程理解错。
基于 YARN 运行 Spark,通常不是说“先装一个全新的 Spark 操作系统级服务”,而是:
- 集群里已经有 Hadoop / YARN
- 你再部署 Spark 客户端和相关依赖
- 提交作业时让 Spark 跑到 YARN 上
从这个角度看,它更像是“把 Spark 接入 Hadoop 平台”。
5.3 基本前提
通常需要已有:
- Hadoop 集群
- YARN ResourceManager / NodeManager
- HDFS
- 可用的 JDK
很多环境里还会有:
- Hive
- Zookeeper
- Kerberos
5.4 常见配置点
这类安装最容易卡在配置兼容上,通常需要关注:
HADOOP_CONF_DIRYARN_CONF_DIRJAVA_HOME- Spark 与 Hadoop 版本兼容性
示例:
export HADOOP_CONF_DIR=/etc/hadoop/conf
export YARN_CONF_DIR=/etc/hadoop/conf
export JAVA_HOME=/path/to/jdk
5.5 提交验证
一个典型验证方式是提交本地示例任务到 YARN:
spark-submit \
--master yarn \
--deploy-mode client \
--class org.apache.spark.examples.SparkPi \
examples/jars/spark-examples*.jar \
10
如果任务能在 YARN 上成功运行,基本说明环境打通了。
5.6 优点和缺点
优点:
- 能融入现有 Hadoop 生态
- 适合企业生产环境
- 资源调度统一
缺点:
- 配置复杂度更高
- 版本兼容问题更多
- 排查问题成本明显高于本地单机
6. 方式四:Docker 安装
Docker 是近几年非常常见的 Spark 安装方式,尤其适合快速实验和环境隔离。
6.1 适用场景
- 快速拉起可用环境
- 团队统一本地开发环境
- 做演示、实验、培训
- 避免本机直接安装一堆依赖
6.2 核心思路
Docker 安装 Spark,本质上是:
- 用镜像封装 JDK、Spark、Python 等依赖
- 用容器来运行 Master、Worker 或 Client
- 通过
docker run或docker compose编排
6.3 常见形态
常见有两种:
-
单容器体验版
适合快速测试命令是否可运行。 -
多容器集群版
一般包括一个 Master 和多个 Worker,常配合docker compose使用。
6.4 一个简化的思路
例如,你可能会用:
docker pull
docker run -it --rm /bin/bash
或者用 docker compose 起一个包含:
- spark-master
- spark-worker-1
- spark-worker-2
的环境。
6.5 Docker 安装的优势
- 环境可复制
- 迁移方便
- 污染宿主机少
- 新人上手快
6.6 Docker 安装的不足
- 需要额外理解容器网络、端口、挂载
- 本地调试文件路径时容易混淆宿主机和容器
- 一些与 Hadoop 生态深度整合的场景,仍然比不上真实集群环境
7. 方式五:Windows、macOS、Linux 各自怎么考虑
Spark 本身是跨平台的,但不同系统下的安装体验差异很大。
7.1 Linux
Linux 是最常见、也最稳定的 Spark 运行环境。
原因很简单:
- 大多数生产环境都在 Linux
- 脚本和依赖兼容性最好
- 集群部署经验最丰富
如果你是认真做大数据开发,Linux 环境基本绕不过去。
7.2 macOS
macOS 很适合本地开发和学习。
优点:
- 安装 JDK、Python、Spark 相对方便
- 适合做本地调试
- 适合 PySpark 和 Notebook 场景
注意点:
- Apple Silicon 和 x86 环境差异要留意
- 某些依赖库在不同芯片架构下行为可能不同
7.3 Windows
Windows 也能装 Spark,但通常不是首选。
原因主要是:
- 环境变量配置更容易出问题
- Hadoop 相关依赖在 Windows 下折腾成本更高
- 很多线上环境最终还是 Linux
如果你是 Windows 用户,更推荐这几种方式:
- WSL 中安装
- Docker 安装
- 远程连 Linux 环境开发
8. 几种安装方式怎么选
如果按实际使用场景来选,可以直接参考下面这张思路表。
| 场景 | 推荐方式 |
|---|---|
| 个人学习 Spark 基础 | 本地单机安装 |
| 想快速做实验,不想污染本机 | Docker 安装 |
| 想理解 Spark 集群结构 | Standalone 安装 |
| 企业已有 Hadoop 平台 | 基于 YARN 的安装 |
| 想快速用起来,少碰底层环境 | 云平台 / 托管环境 |
如果你现在还拿不准,记住这个最稳妥的建议:
- 学习阶段:本地单机 + Docker
- 工作阶段:YARN / Kubernetes / 托管平台
9. 常见安装问题
9.1 JAVA_HOME is not set
这是最经典的问题。
本质上就是 Spark 找不到 Java。
检查:
echo $JAVA_HOME
which java
java -version
9.2 pyspark 能启动,但导包报错
通常需要检查:
- 当前 Python 解释器是不是你以为的那个
- 是否有多个 Python 版本冲突
PYSPARK_PYTHON是否配置正确
9.3 本地能跑,提交到集群失败
这种问题通常和“安装本身”已经没太大关系,更多是环境接入问题,比如:
- 集群地址不对
- Hadoop 配置没带上
- 权限问题
- 网络问题
- 依赖包没分发
9.4 Web UI 打不开
优先检查:
- 端口是否被占用
- 防火墙是否拦截
- 宿主机和容器端口映射是否正确
- 你访问的是不是正确节点
10. 安装完成后,建议你立刻验证这几件事
不要只看到 spark-shell 启动成功就觉得万事大吉。
更稳妥的做法是至少验证下面几项:
-
交互命令能启动
例如spark-shell、pyspark -
能执行一个简单作业
例如做一个count() -
能访问 Web UI
确认 Master、Application、Executor 信息是否正常 -
能读写一份测试数据
比如读本地文件、写一份输出目录 -
如果是集群环境,确认作业确实跑在目标资源管理器上
例如 YARN 页面是否能看到任务
11. 一个推荐的学习顺序
如果你是第一次装 Spark,我建议按下面的顺序来,不容易乱:
-
先在本地单机模式装通
目标是能用spark-shell或pyspark -
学会
spark-submit -
再试 Docker 版
理解 Master / Worker / 容器网络 -
最后再接触 YARN 或 Kubernetes
这一步才是真正进入生产环境思路
很多人一上来就装集群,最后花大量时间在环境问题上,反而没有学到 Spark 本身。
12. 总结
Spark 的安装并不只有一种标准答案,而是取决于你的目标:
- 如果是学习,用本地单机最省事
- 如果想快速体验隔离环境,用 Docker 很合适
- 如果要理解 Spark 自己的集群模式,可以装 Standalone
- 如果在企业环境里,很多时候会跑在 YARN 上
所以真正重要的问题不是“哪种安装方式最正确”,而是:
你当前是为了学习、实验,还是为了接入生产环境?
把这个问题想清楚,安装路线自然就清楚了。
13. 附:一份最小化本地安装清单
如果你只想尽快把 Spark 在本地跑起来,可以按这份最小清单执行:
- 安装 JDK
- 配置
JAVA_HOME - 下载并解压 Spark
- 配置
SPARK_HOME - 把
$SPARK_HOME/bin加入PATH - 执行
spark-shell或pyspark - 跑一个
count()验证
只要这 7 步通了,你就已经具备继续学 Spark 的环境基础。