You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询:使用Mac与Ubuntu设备搭建Spark多节点集群是否可行

能否用Mac + Ubuntu搭建Spark多节点集群?

当然可以!Spark本身是跨平台的分布式计算框架,只要你的Mac和Ubuntu笔记本处于同一网络环境下,就能顺利搭建起多节点集群。下面我一步步给你讲具体操作细节:

第一步:确保两台机器网络连通

先确认Mac和Ubuntu笔记本连在同一个局域网(比如同一WiFi),互相能ping通对方的IP:

  • 在Mac终端输入 ping ubuntu的局域网IP
  • 在Ubuntu终端输入 ping Mac的局域网IP
    如果能正常收到回应就没问题;要是ping不通,先检查两台机器的防火墙设置,暂时关闭或者开放Spark常用端口(默认7077、8080、4040等)。

第二步:配置SSH免密登录

Spark集群需要master节点能无密码访问worker节点,所以得先搞定SSH免密:

  1. 在Mac(假设作为master节点)生成SSH密钥:
    ssh-keygen -t rsa
    
    一路回车用默认设置就行,不用设密码。
  2. 把Mac的公钥复制到Ubuntu机器上:
    ssh-copy-id ubuntu用户名@ubuntu的IP
    
    输入Ubuntu的登录密码完成复制。
  3. 测试免密登录:在Mac终端输入 ssh ubuntu用户名@ubuntu的IP,如果不用输密码就能直接进入Ubuntu终端,就配置成功了。

第三步:安装Java环境

Spark依赖Java,两台机器都得安装同版本的Java(推荐Java 8或11):

  • Mac端:用Homebrew安装(没有Homebrew先装一下):
    brew install openjdk@11
    
    然后配置环境变量,打开~/.zshrc(如果用bash就是~/.bash_profile),添加:
    export JAVA_HOME=/usr/local/opt/openjdk@11
    export PATH=$JAVA_HOME/bin:$PATH
    
    最后执行 source ~/.zshrc 让配置生效,输入 java -version 验证安装。
  • Ubuntu端:用apt安装:
    sudo apt update && sudo apt install openjdk-11-jdk
    
    配置环境变量,打开~/.bashrc添加:
    export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
    export PATH=$JAVA_HOME/bin:$PATH
    
    执行 source ~/.bashrc 生效,同样用java -version验证。

第四步:安装并配置Spark

  1. 下载Spark:两台机器都下载同一版本的Spark(比如3.3.2版本,选带Hadoop的预编译包),解压到合适路径,比如:
    # Mac端示例
    tar -zxvf spark-3.3.2-bin-hadoop3.tgz -C /usr/local/
    # Ubuntu端同理
    sudo tar -zxvf spark-3.3.2-bin-hadoop3.tgz -C /usr/local/
    
  2. 配置环境变量:两台机器都在各自的shell配置文件里添加Spark路径:
    export SPARK_HOME=/usr/local/spark-3.3.2-bin-hadoop3
    export PATH=$SPARK_HOME/bin:$SPARK_HOME/sbin:$PATH
    
    执行source命令生效(Mac是source ~/.zshrc,Ubuntu是source ~/.bashrc)。
  3. 配置集群节点:
    • Mac(master)端:进入Spark的conf目录,复制模板文件并编辑:
      cd $SPARK_HOME/conf
      cp spark-env.sh.template spark-env.sh
      cp slaves.template slaves
      
      编辑spark-env.sh,添加:
      export JAVA_HOME=/usr/local/opt/openjdk@11  # 替换成你的Mac Java路径
      export SPARK_MASTER_HOST=你的Mac局域网IP  # 比如192.168.1.100
      export SPARK_MASTER_PORT=7077
      
      编辑slaves,添加Ubuntu的节点信息:
      ubuntu用户名@ubuntu的IP  # 比如user@192.168.1.101
      
    • Ubuntu(worker)端:只需要编辑spark-env.sh配置Java路径即可,不用改master相关设置。

第五步:启动集群并验证

  1. 在Mac终端执行启动命令:
    start-all.sh
    
    这会启动Mac上的master节点,同时远程启动Ubuntu上的worker节点。
  2. 打开浏览器访问 http://你的MacIP:8080,在Spark Web UI里能看到Ubuntu的worker节点状态,显示为ALIVE就说明集群搭建成功了。
  3. 测试运行一个简单任务:在Mac终端输入spark-shell,然后执行:
    sc.parallelize(1 to 1000).count()
    
    任务会分配到两台节点上执行,结果正常返回就没问题。

额外注意事项

  • 两台机器的Spark、Java版本必须完全一致,否则会出现兼容性问题。
  • 如果worker节点无法连接master,检查master的IP是否用了局域网IP(别用localhost),以及防火墙是否开放了7077端口。
  • 可以根据机器硬件配置,在spark-env.sh里调整资源参数,比如SPARK_WORKER_CORES=2(设置worker用2核)、SPARK_WORKER_MEMORY=4g(设置worker用4G内存)。

内容的提问来源于stack exchange,提问作者conetfun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 10:43:16