Windows Spark 集群分布式安装完整教程:从单机测试到多机集群,一步到位
Spark 是目前最流行的分布式数据处理框架,尤其适合处理大规模数据时。你可能已经听过“Spark 集群”,想知道怎么在 Windows 上搭建分布式环境。别担心,新手也能快速上手!Windows 上 Spark 的集群模式(Standalone)其实挺简单的,本文就给你详细步骤,从准备到启动,再到测试,全都可执行。
为什么要在 Windows 上装 Spark 集群?
Windows 适合本地开发和测试集群,资源管理器界面直观,适合不想折腾 Linux 的同学。搭建完后,你可以把代码提交到多台机器上跑任务,比单机快几倍。
准备工作(必须先做,省得后面卡壳)
-
安装 Java 8 或更高版本(Spark 强烈推荐 Java 8,因为 Windows 支持最好)
- 去 Oracle 官网下载 JDK 8(或最新 LTS)。
- 安装完后,右键我的电脑 → 属性 → 高级系统设置 → 环境变量。
- 新建系统变量:变量名
JAVA_HOME,值填 JDK 安装路径(如C:\Program Files\Java\jdk1.8.0_xxx)。 - 新建系统变量
PATH,值填%JAVA_HOME%\bin(如果没有就添加)。 - 保存后打开命令提示符,输入
java -version,看到版本就对了。
-
下载 Spark
- 去 Apache Spark 官网下载页面(spark.apache.org/downloads.html),选最新版本(如 3.5.x 或 4.x),推荐
spark-xxx-bin-hadoop3.tgz包(带 Hadoop 兼容的,Windows 更稳)。 - 解压到
C:\spark(文件夹名别带空格!)。
- 去 Apache Spark 官网下载页面(spark.apache.org/downloads.html),选最新版本(如 3.5.x 或 4.x),推荐
-
设置环境变量
- 新建系统变量
SPARK_HOME,值C:\spark。 - 新建系统变量
PATH,值%SPARK_HOME%\bin(或%SPARK_HOME%\bin;%PATH%)。 - 保存后重启命令提示符,输入
spark-shell,看到欢迎界面就装好了。
- 新建系统变量
-
解决 Hadoop 依赖(winutils.exe)
- Spark 用 Hadoop 的某些工具做文件操作,Windows 需要这个二进制文件。
- 去 GitHub 搜索
steveloughran/winutils或cdarlint/winutils,下载对应 Hadoop 版本的winutils.exe。 - 解压后放到
C:\spark\spark-xxx-bin-hadoop3\bin文件夹(覆盖之前的)。 - 新建系统变量
HADOOP_HOME,值C:\spark\spark-xxx-bin-hadoop3。 - 把
HADOOP_HOME%\bin加到PATH(如果有就追加)。 - 测试:命令提示符输入
hadoop version,看到版本号就成功。
小贴士:整个过程用管理员权限运行命令提示符,避免权限问题。
搭建单机集群(先玩玩)
Spark 官方说启动脚本不支持 Windows,但我们可以用命令手动启动,超级简单。
启动 Master(主节点):
- 打开命令提示符(管理员),进入
C:\spark\spark-xxx-bin-hadoop3\bin。 - 输入:
spark-class org.apache.spark.deploy.master.Master - 它会输出类似
spark://你的IP:7077的 Master URL。记下来(IP 可以用ipconfig看)。
启动 Worker(工作节点):
- 再开一个命令提示符,同样进入 bin 文件夹。
- 输入:
spark-class org.apache.spark.deploy.worker.Worker spark://你的IP:7077 - Worker 会自动注册到 Master。
访问管理界面:
- 在浏览器输入
http://你的IP:8080,就能看到 Spark Web UI,监控任务、内存、CPU 等。
(单机模式下用spark://localhost:7077也可以)
搭建多机集群(真实分布式)
假设你有两台机器:A(Master)和 B(Worker)。两台机器必须在同一个局域网,IP 不同。
步骤1:在所有机器上执行准备工作
(上面第1-4步全做一遍,Java、Spark、winutils、环境变量都要同步到每台机器。)
步骤2:在 Master 机器 A 上启动 Master
- 命令:
spark-class org.apache.spark.deploy.master.Master - 记录 Master URL(
spark://A的IP:7077)。
步骤3:在 Worker 机器 B 上启动 Worker
- 命令:
spark-class org.apache.spark.deploy.worker.Worker spark://A的IP:7077
步骤4:验证集群
- 两台机器都启动后,在任意机器的命令提示符输入:
spark-shell --master spark://A的IP:7077 - 输入
sc.version(Spark 版本)或sc.parallelize(1 to 100).count()测试。 - 如果 Worker 能注册到 Master,集群就活了!在 Web UI 里能看到 Worker 列表。
测试分布式任务(实际用起来)
用 spark-submit 提交程序,指定 Master 地址。
示例(Python PySpark):
- 写个简单脚本:
hello.pyfrom pyspark import SparkContext sc = SparkContext(appName="test", master="spark://A的IP:7077") rdd = sc.parallelize(range(1, 10001)) print(rdd.count()) - 提交任务:
spark-submit --master spark://A的IP:7077 hello.py
任务会在 Master 和 Worker 之间分配计算,跑完自动结束。
注意事项与避坑指南
- 防火墙:Windows 防火墙要把 7077、8080、8081 端口放通(每台机器都做)。
- IP 地址:用实际 IP(
ipconfig看 IPv4),别用 localhost。 - 资源分配:单机测试别占满所有核心,设置
spark.cores.max=2测试更稳。 - 日志查看:Master 和 Worker 启动时会在
work文件夹生成日志,bin/spark-class org.apache.spark.deploy.master.Master --help看全部参数。 - 升级:想换 Spark 版本?直接解压新版,覆盖旧版环境变量即可。
- 安全:集群默认不加密,生产环境加认证再用。
进阶优化
- 想跑 HDFS?把 HDFS 客户端也放到每台机器,路径指向你的 HDFS 集群(Windows 版 HDFS 更麻烦,建议先单机玩)。
- 内存调优:Master 和 Worker 的工作目录用 SSD,设置
SPARK_WORKER_MEMORY=8g。 - 监控:装 Prometheus + Grafana 看实时指标,免费又强大。
- 替代方案:如果不想搞多机,Windows 上单机 Spark 就够开发了,直接
spark-shell --master local[*]。
装完这些,你就能在 Windows 上轻松跑分布式 Spark 项目了!数据处理、机器学习、图计算,随便玩。遇到具体报错(比如端口冲突、winutils 找不到),把错误消息截图或复制发我,我马上帮你查。
这样一步步来,基本半小时就能看到效果。干起来!

还没有评论,来说两句吧...