Windows 下 Apache Spark 安装配置全攻略
Apache Spark 是一个强大的分布式计算框架,广泛应用于大数据处理和分析。对于想在个人 Windows 电脑上学习 Spark 的开发者或数据分析爱好者来说,在 Windows 环境下安装和配置 Spark 可能会遇到一些特有的问题。本文将提供一个从零开始的详细教程,即使是电脑新手也能跟着一步步成功安装。
一、 安装前准备:搭建 Spark 的运行环境
Spark 本身是用 Scala 语言编写的,运行在 Java 虚拟机(JVM)上。因此,在安装 Spark 之前,我们必须先准备好它的“地基”。
1. 安装 Java 开发工具包 (JDK)
Spark 需要 Java 8 或更高版本的支持。我们首先来安装 JDK。
-
第一步:下载 JDK 访问 Oracle 官网的 Java 下载页面,找到适合 Windows 系统的 JDK 安装包(通常是
.exe文件)。建议选择长期支持版本,例如 JDK 8、JDK 11 或 JDK 17。对于 Spark 学习,JDK 8 的兼容性最为广泛。 -

第二步:安装 JDK
- 双击下载好的
.exe安装文件。 - 安装过程基本就是一路点击“下一步”。你可以更改安装路径,但建议路径中不要包含中文或空格,例如可以安装到
C:\Java\jdk1.8.0_381。 - 安装程序可能会提示你安装 JRE(Java 运行时环境),同样建议安装。
- 双击下载好的
-
第三步:配置环境变量(关键步骤) 这是让系统在任何位置都能识别 Java 命令的关键。
- 在桌面或文件资源管理器中,右键点击“此电脑”,选择“属性”。
- 点击“高级系统设置”,在弹出的窗口中选择“环境变量”。
- 在“系统变量”区域,点击“新建”。
- 变量名:
JAVA_HOME - 变量值:你的 JDK 安装路径,例如
C:\Java\jdk1.8.0_381
- 变量名:
- 找到系统变量中的
Path变量,选中后点击“编辑”。 - 点击“新建”,添加一条新记录:
%JAVA_HOME%\bin - 点击“确定”保存所有更改。
-
第四步:验证安装
- 按下
Win + R键,输入cmd打开命令提示符。 - 输入命令
java -version并回车。 - 如果成功显示 Java 的版本信息(例如 “java version “1.8.0_381””),说明 JDK 安装和配置成功。
- 按下
2. 安装 Scala(可选但推荐)
虽然 Spark 支持用 Java、Python 和 R 编程,但其核心是用 Scala 写的。安装 Scala 可以帮助你更好地理解 Spark,并运行一些 Scala 示例。
- 下载与安装:前往 Scala 官网下载 Windows 安装包(
.msi文件)。安装过程同样简单,建议安装到无中文空格的路径,如C:\Scala。 - 配置环境变量:
- 像配置 Java 一样,新建一个系统变量
SCALA_HOME,值为你的 Scala 安装路径,如C:\Scala。 - 在
Path变量中添加%SCALA_HOME%\bin。
- 像配置 Java 一样,新建一个系统变量
- 验证:在命令提示符中输入
scala -version,看到版本信息即成功。
二、 下载与安装 Apache Spark
现在,主角可以登场了。
-
第一步:下载 Spark
- 访问 Apache Spark 官网的下载页面。
- 在 “Choose a Spark release” 下拉菜单中,选择一个稳定版本。对于初学者,建议选择最新的稳定版本。
- 在 “Choose a package type” 下拉菜单中,选择 “Pre-built for Apache Hadoop 3.3 and later”。这个版本包含了大多数常用的 Hadoop 依赖库,适合在本地学习使用,即使你并没有安装 Hadoop。
- 点击旁边的
.tgz链接开始下载。
-
第二步:解压 Spark
- 下载的文件是一个
.tgz压缩包。在 Windows 上,你可以使用解压软件(如 7-Zip)来解压。首先用 7-Zip 解压出.tar文件,然后再对.tar文件解压一次。 - 将解压后的文件夹(例如
spark-3.5.1-bin-hadoop3)移动到你希望放置的位置,例如C:\Spark。同样,路径中避免中文和空格。
- 下载的文件是一个
-
第三步:配置 Spark 环境变量
- 新建系统变量
SPARK_HOME,变量值为你的 Spark 解压目录,例如C:\Spark。 - 在
Path变量中添加%SPARK_HOME%\bin。
- 新建系统变量
三、 解决 Windows 环境特有难题:winutils.exe
在 Linux 或 macOS 上,Spark 可以开箱即用。但在 Windows 上,由于缺少 Hadoop 的某些 Windows 原生组件,直接运行会报错。我们需要手动解决这个问题。
-
第一步:下载 winutils.exe
- 由于 Apache 官方不提供
winutils.exe,我们需要从第三方获取。一个可靠的选择是去 GitHub 上搜索 “winutils” 仓库。 - 找到与你的 Spark(Hadoop)版本对应的文件。例如,你下载的是 “Pre-built for Apache Hadoop 3.3”,那么就去找
hadoop-3.3.x版本的winutils.exe。 - 下载
winutils.exe文件。
- 由于 Apache 官方不提供
-
第二步:放置 winutils.exe 并配置
- 在你的电脑上创建一个目录,例如
C:\hadoop\bin。 - 将下载的
winutils.exe文件放入这个bin文件夹内。 - 新建一个系统变量
HADOOP_HOME,变量值为C:\hadoop(注意,是bin目录的上一级)。 - 在
Path变量中添加%HADOOP_HOME%\bin。
- 在你的电脑上创建一个目录,例如
-
第三步:授予执行权限(关键步骤) 为了避免后续出现 “Unable to load native-hadoop library” 等权限错误,我们需要为 Spark 可能用到的临时目录授权。
- 以管理员身份打开命令提示符(在开始菜单搜索 “cmd”,右键选择“以管理员身份运行”)。
- 输入以下命令并回车:
%HADOOP_HOME%\bin\winutils.exe chmod 777 C:\tmp\hive如果
C:\tmp\hive目录不存在,命令会报错。我们可以先创建它,或者直接授权给C:\tmp:mkdir C:\tmp %HADOOP_HOME%\bin\winutils.exe chmod 777 C:\tmp
四、 验证安装:启动 Spark Shell
一切就绪,让我们点燃 Spark 的第一把火。
- 打开一个普通的命令提示符(不需要管理员权限)。
- 输入以下命令启动 PySpark(Python 版的 Spark Shell):
pyspark - 稍等片刻,你会看到屏幕上打印出大量的日志信息,最后会出现一个交互式提示符
>>>。 - 输入一个简单的测试命令,创建一个 Spark 数据集并查看:
df = spark.createDataFrame([(1, “Alice”), (2, “Bob”)], [“id”, “name”]) df.show()如果成功显示一个包含 id 和 name 两列的小表格,那么恭喜你,Spark 已经在你的 Windows 电脑上成功运行了!
- 输入
quit()或按Ctrl+C退出 Spark Shell。
启动 Scala Shell:如果你想测试 Scala 版本,在命令提示符输入 spark-shell 即可,测试方法类似。
五、 常见问题与避坑指南
-
问题:启动时出现 “java.io.IOException: Could not locate executable null\bin\winutils.exe”
- 解决:这明确说明系统没找到
winutils.exe。请严格按照第三步检查HADOOP_HOME环境变量是否正确设置,以及Path中是否包含了%HADOOP_HOME%\bin,并确认winutils.exe文件确实放在那个bin目录下。
- 解决:这明确说明系统没找到
-
问题:运行
pyspark或spark-shell时卡住,日志中有 Hadoop 相关的 WARN 或 ERROR- 解决:这通常与第三步的权限设置有关。请确保已使用管理员权限的命令提示符执行了
winutils.exe chmod 777命令对临时目录进行了授权。
- 解决:这通常与第三步的权限设置有关。请确保已使用管理员权限的命令提示符执行了
-
问题:命令提示符中提示 “’java’ 不是内部或外部命令”
- 解决:JDK 环境变量配置有误。请返回第一步,仔细检查
JAVA_HOME和Path的设置,并重新打开一个命令提示符窗口进行测试(环境变量修改后需要重启终端才能生效)。
- 解决:JDK 环境变量配置有误。请返回第一步,仔细检查
-
性能优化建议:
- 对于本地学习,你可以在启动 Shell 时限制内存使用,避免卡顿。例如:
pyspark --driver-memory 2g。 - 将 Spark 的临时工作目录设置到固态硬盘(SSD)上,可以提升少量性能。可以通过在代码中配置
spark.local.dir参数实现。
- 对于本地学习,你可以在启动 Shell 时限制内存使用,避免卡顿。例如:
通过以上步骤,你应该已经成功在 Windows 系统上搭建起了 Spark 学习环境。接下来,你就可以开始探索 Spark 强大的数据处理能力了,从简单的 WordCount 例子到复杂的数据分析任务,这片新天地正等着你去发掘。如果在后续使用中遇到更具体的问题,欢迎随时深入探讨。

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