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

Apache Spark MLlib聚类在Standalone集群仅单节点运行问题

嘿,我来帮你排查下Spark Standalone集群只有一台机器工作的问题——这种情况我在帮别人调集群时遇到过好多次,大概率是集群注册、资源配置或者任务并行度的问题,咱们一步步来定位:

第一步:先确认Worker节点是否真的成功注册到Master

这是最基础的前提,如果Worker没连上Master,那肯定不会干活:

  • 打开Master机器的Spark Web UI(默认地址是http://你的Master机器IP:8080),看页面里的「Workers」列表,有没有那台闲置的机器。要是没显示,说明Worker没注册成功:
    • 去Worker机器的conf文件夹里,检查spark-env.sh文件,确认SPARK_MASTER_HOST配置的是Master的正确IP或者主机名,而且两台机器之间能互相ping通(记得关闭防火墙,或者开放Spark默认的Master端口7077)
    • 手动在Worker机器上启动节点试试:执行./sbin/start-slave.sh spark://你的Master机器IP:7077,然后刷新Master的UI,看Worker有没有出现
    • 查看Worker的日志(在Spark根目录的logs文件夹里,文件名类似spark-xxx-worker-xxx.out),找报错信息——比如「连接被拒绝」「主机名解析失败」这类,都是常见的注册失败原因
第二步:检查任务提交时的资源配置

就算Worker注册成功了,也可能是你提交任务时没分配足够的资源,导致任务全堆在Master节点:

  • 提交K-means任务的时候,一定要显式指定总核数和执行内存。比如你的两台机器各有4核8G内存,提交命令可以这么写:
    ./bin/spark-submit \
      --class 你的K-means主类名 \
      --master spark://你的Master机器IP:7077 \
      --total-executor-cores 6 \
      --executor-memory 6g \
      你的任务jar包路径 \
      数据集路径 \
      其他任务参数(比如聚类数K)
    
    这里的--total-executor-cores要设置成小于等于集群总核数,--executor-memory也要根据机器内存合理分配,别超过单台机器的可用内存
第三步:确认数据集的访问权限

你说把数据集复制到了两台机器的data/mllib,但要注意:

  • 如果任务里用的是相对路径(比如data/mllib/xxx),Spark会默认从提交任务的节点(也就是Master)的本地读取数据,Worker节点因为没法访问Master的本地文件,所以接不到任务。解决方法有两个:
    1. 推荐用HDFS存储数据集——超大规模数据本来就适合放在分布式存储里,所有节点都能访问到
    2. 确保两台机器的数据集绝对路径完全一致,并且任务里用file://开头的路径(比如file:///opt/spark/data/mllib/xxx)
第四步:调整K-means任务的并行度

如果任务本身的并行度不够,就算集群有资源,也只会用少数节点:

  • 读取数据集的时候,显式设置RDD的分区数,比如:
    val data = sc.textFile("数据集路径", minPartitions = 8) // 分区数最好大于等于集群总核数
    
  • 在K-means配置里设置并行度:
    val kmeans = new KMeans()
      .setK(你的聚类数)
      .setMaxIterations(迭代次数)
      .setParallelism(8) // 这个值设置成和集群总核数相当的数值
    val model = kmeans.run(data)
    
最后验证集群的基础连通性

Spark Standalone集群依赖SSH免密登录,要是Master没法免密访问Worker,也会导致任务没法分发:

  • 在Master机器上执行ssh Worker机器IP,看看能不能不用输密码直接登录。如果不行,就生成SSH密钥对,把Master的公钥加到Worker的~/.ssh/authorized_keys文件里

按照上面的步骤排查,应该能找到问题所在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:25:23