windows spark集群分布式安装

老刘

Windows Spark 集群分布式安装完整教程:从单机测试到多机集群,一步到位

Spark 是目前最流行的分布式数据处理框架,尤其适合处理大规模数据时。你可能已经听过“Spark 集群”,想知道怎么在 Windows 上搭建分布式环境。别担心,新手也能快速上手!Windows 上 Spark 的集群模式(Standalone)其实挺简单的,本文就给你详细步骤,从准备到启动,再到测试,全都可执行。

为什么要在 Windows 上装 Spark 集群?
Windows 适合本地开发和测试集群,资源管理器界面直观,适合不想折腾 Linux 的同学。搭建完后,你可以把代码提交到多台机器上跑任务,比单机快几倍。

准备工作(必须先做,省得后面卡壳)

  1. 安装 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,看到版本就对了。
  2. 下载 Spark

    • 去 Apache Spark 官网下载页面(spark.apache.org/downloads.html),选最新版本(如 3.5.x 或 4.x),推荐 spark-xxx-bin-hadoop3.tgz 包(带 Hadoop 兼容的,Windows 更稳)。
    • 解压到 C:\spark(文件夹名别带空格!)。
  3. 设置环境变量

    • 新建系统变量 SPARK_HOME,值 C:\spark
    • 新建系统变量 PATH,值 %SPARK_HOME%\bin(或 %SPARK_HOME%\bin;%PATH%)。
    • 保存后重启命令提示符,输入 spark-shell,看到欢迎界面就装好了。
  4. 解决 Hadoop 依赖(winutils.exe)

    • Spark 用 Hadoop 的某些工具做文件操作,Windows 需要这个二进制文件。
    • GitHub 搜索 steveloughran/winutilscdarlint/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):

  1. 写个简单脚本:hello.py
    from pyspark import SparkContext
    sc = SparkContext(appName="test", master="spark://A的IP:7077")
    rdd = sc.parallelize(range(1, 10001))
    print(rdd.count())
  2. 提交任务:
    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 找不到),把错误消息截图或复制发我,我马上帮你查。

这样一步步来,基本半小时就能看到效果。干起来!

文章版权声明:文章内容均来源于各大短视频平台搜集以及修改和删减新增,如有侵权或者违规,请联系站长进行删除,如需转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
验证码
评论列表 (暂无评论,1人围观)

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

目录[+]