如何在独立群集模式下为每个工作人员分配更多执行程序?

Ric*_*ich 12 apache-spark

我在一个包含36个内核和58GB内存的5个工作节点的集群中使用Spark 1.3.0.我想配置Spark的Standalone集群,每个worker有很多执行程序.

我已经看到合并的SPARK-1706,但是如何实际配置多个执行器并不是很明确.

以下是群集的最新配置:

spark.executor.cores = "15"
spark.executor.instances = "10"
spark.executor.memory = "10g"
Run Code Online (Sandbox Code Playgroud)

这些设置是SparkContext在将Spark应用程序提交到群集时设置的.

ngt*_*hoa 30

首先需要配置spark独立群集,然后设置要运行的每个spark应用程序所需的资源量.

要配置群集,您可以尝试:

  • conf/spark-env.sh:

    • 设置SPARK_WORKER_INSTANCES = 10确定每个节点的Worker实例数(#Executors)(其默认值仅为1)
    • 设置SPARK_WORKER_CORES = 15一个Worker可以使用的#个核心数(默认值:所有核心,你的情况是36)
    • 设置SPARK_WORKER_MEMORY = 55g#可在一台计算机(工作节点)上用于运行Spark程序的内存总量.
  • 将此配置文件复制到同一文件夹上的所有工作节点

  • 通过运行sbin(sbin/start-all.sh,...)中的脚本来启动集群

由于您有5个工作者,使用上述配置,您应该在主Web界面上看到5个(工人)*10(每个工人的执行者)= 50个活动执行者(默认情况下为http:// localhost:8080)

在独立模式下运行应用程序时,默认情况下,它将获取群集中所有可用的执行程序.您需要显式设置运行此应用程序的资源量:例如:

val conf = new SparkConf()
             .setMaster(...)
             .setAppName(...)
             .set("spark.executor.memory", "2g")
             .set("spark.cores.max", "10")
Run Code Online (Sandbox Code Playgroud)

  • 这个答案是在多个地方混合执行者和工人.需要修复/澄清. (2认同)