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

Spark独立集群3个Worker节点指定Executor分配方案咨询

Spark Standalone集群手动分配Executor及YARN方案

针对Standalone集群的手动分配方案

方式1:标签绑定精确指定每个Worker的Executor数

Spark 2.4.4支持给Worker节点打专属标签,提交任务时通过标签约束Executor的分配:

  1. 给三台Worker分别打唯一标签:
    启动Worker时添加标签参数,比如给第一台执行:
    ./spark-worker.sh spark://master:7077 --labels node=node1
    
    另外两台分别设置--labels node=node2和--labels node=node3,也可以在spark-env.sh里配置SPARK_WORKER_OPTS="--labels node=nodeX"永久生效。
  2. 提交任务时指定每个标签对应的Executor数量:
    spark-submit \
      --master spark://master:7077 \
      --total-executor-cores 120 \
      --executor-memory 8G \
      --conf spark.executor.instances=24 \
      --conf spark.executor.nodeAffinity.node.node1=8 \
      --conf spark.executor.nodeAffinity.node.node2=8 \
      --conf spark.executor.nodeAffinity.node.node3=8 \
      your-application.jar
    
    这里给每个Worker分配8个Executor(24/3),强制让负载均匀分布到三台机器。

方式2:限制单Worker的Executor上限

如果不需要精确指定每个Worker的数量,只需要避免某台Worker被占满,可以给每个Worker设置最大可分配的Executor数:
启动Worker时添加--max-executors 8参数,或者在spark-env.sh中配置SPARK_WORKER_OPTS="--max-executors 8",这样每个Worker最多只能分配8个Executor,24个Executor自然会均匀分到三台机器上。

YARN集群的解决方案

YARN的资源调度机制天生更擅长均衡负载,能解决你遇到的问题:

  • 默认的CapacityScheduler会自动将Spark Executor对应的YARN Container分散到不同的NodeManager上,避免单节点负载过高;
  • 如果需要精确控制,可以给YARN的NodeManager打节点标签,通过队列配置或任务提交参数指定Executor的节点分配规则;
  • 另外,通过配置YARN单节点的最大CPU/内存资源上限,配合Spark的--executor-cores、--executor-memory参数,能更灵活地控制每个节点的负载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 21:32:29