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

如何在不重启Spark集群的前提下增加Worker节点(集群管理器为YARN)

YARN环境下无重启扩容Spark Worker节点操作方案

提示:如果你使用的是纯Spark on YARN模式(即Spark无独立Master/Worker进程,所有资源完全由YARN的ResourceManager调度),不需要单独扩容Spark Worker,只需要将新节点的YARN NodeManager加入集群,Spark任务会自动调度到新节点上。本方案针对Spark Standalone集群对接YARN作为存储/资源兜底的场景生效。

前置准备

  • 新节点基础环境与现有集群节点完全对齐:JDK版本、Scala版本、Spark安装包版本、系统参数(文件句柄限制、swap配置等)保持一致
  • 新节点与现有Spark Master、其他Worker节点的网络互通,相关通信端口(默认7077、8081、4040等)已放通
  • 新节点已经完成YARN配置同步,NodeManager进程正常运行并向集群ResourceManager心跳汇报

具体操作步骤

  • 同步现有Spark集群的所有配置文件到新节点的$SPARK_HOME/conf目录下,核心文件包括spark-env.sh、spark-defaults.conf,以及关联的YARN配置文件core-site.xml、yarn-site.xml、hdfs-site.xml
  • 按需在新节点的spark-env.sh中配置Worker资源参数,和现有节点对齐:
    export SPARK_WORKER_CORES=<单Worker可用CPU核数,和现有节点一致>
    export SPARK_WORKER_MEMORY=<单Worker可用内存,和现有节点一致>
    
  • 在新节点本地执行Worker启动命令,不需要操作现有集群的任何进程:
    $SPARK_HOME/sbin/start-worker.sh spark://<Spark Master的主机名/IP>:<Master端口,默认7077>
  • 验证扩容结果:
    1. 新节点执行ps -ef | grep org.apache.spark.deploy.worker.Worker确认进程正常运行
    2. 访问Spark Master WebUI(默认端口8080),确认新Worker节点出现在节点列表中,状态为ALIVE,资源参数正确
    3. 提交测试Spark任务,验证任务可以正常调度到新节点上运行,无报错

注意事项

  • 整个扩容过程不会重启现有Master、Worker进程,对正在运行的Spark任务无任何影响
  • 新节点的Spark版本必须和现有集群完全一致,否则会出现RPC通信异常,无法被Master节点识别纳入资源池
  • 如果需要后续集群重启时新节点自动加入,可以将新节点的主机名/IP添加到Master节点的$SPARK_HOME/conf/workers配置文件中,该修改不会即时生效,仅下次集群重启时生效
  • 不要在新节点上重复执行Master启动命令,避免集群出现双Master异常(除非你配置了Master高可用)
  • 如果你的Spark集群开启了认证、鉴权配置,需要提前在新节点上同步密钥、权限配置,避免Worker进程无法注册到Master

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 16:45:03