咨询:使用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免密:
- 在Mac(假设作为master节点)生成SSH密钥:
一路回车用默认设置就行,不用设密码。ssh-keygen -t rsa - 把Mac的公钥复制到Ubuntu机器上:
输入Ubuntu的登录密码完成复制。ssh-copy-id ubuntu用户名@ubuntu的IP - 测试免密登录:在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:$PATHsource ~/.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:$PATHsource ~/.bashrc生效,同样用java -version验证。
第四步:安装并配置Spark
- 下载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/ - 配置环境变量:两台机器都在各自的shell配置文件里添加Spark路径:
执行export SPARK_HOME=/usr/local/spark-3.3.2-bin-hadoop3 export PATH=$SPARK_HOME/bin:$SPARK_HOME/sbin:$PATHsource命令生效(Mac是source ~/.zshrc,Ubuntu是source ~/.bashrc)。 - 配置集群节点:
- Mac(master)端:进入Spark的conf目录,复制模板文件并编辑:
编辑cd $SPARK_HOME/conf cp spark-env.sh.template spark-env.sh cp slaves.template slavesspark-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=7077slaves,添加Ubuntu的节点信息:ubuntu用户名@ubuntu的IP # 比如user@192.168.1.101 - Ubuntu(worker)端:只需要编辑
spark-env.sh配置Java路径即可,不用改master相关设置。
- Mac(master)端:进入Spark的conf目录,复制模板文件并编辑:
第五步:启动集群并验证
- 在Mac终端执行启动命令:
这会启动Mac上的master节点,同时远程启动Ubuntu上的worker节点。start-all.sh - 打开浏览器访问
http://你的MacIP:8080,在Spark Web UI里能看到Ubuntu的worker节点状态,显示为ALIVE就说明集群搭建成功了。 - 测试运行一个简单任务:在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
相关产品推荐
相关产品推荐

