独立地在Spark中创建多少个执行器

时间:2019-07-12 07:27:42

标签: apache-spark

我在没有hadoop / yarn的服务器(8vCores和64GB RAM)中安装了spark。正在运行具有以下属性的作业。

 spark.executor.instances=4
 spark.executor.memory=6g
 spark.executor.cores=4
 spark.driver.memory=16g

从最上面的命令中,我看到程序占用了22.3gb的内存。您能否让我知道当我们独立运行时将创建多少个执行器。

谢谢

1 个答案:

答案 0 :(得分:1)

来自文档https://spark.apache.org/docs/latest/spark-standalone.html

Spark Standalone集群模式当前仅支持跨应用程序的简单FIFO调度程序。 您可以用不同的方式启动这样的集群。

但是,要允许多个并发用户,您可以控制每个应用程序将使用的最大资源数量。

  

默认情况下,它将获取群集中的所有内核,这只会使   如果您一次只运行一个应用程序,那就很有意义。谁来做?例外证明了规则。

您可以通过在SparkConf中设置spark.cores.max来限制内核数量。例如:

val conf = new SparkConf()
  .setMaster(...)
  .setAppName(...)
  .set("spark.cores.max", "10")
val sc = new SparkContext(conf)

此外,您可以在集群主进程上配置spark.deploy.defaultCores,以将未将spark.cores.max设置为小于无限的应用程序更改默认值。为此,请在conf / spark-env.sh中添加以下内容:

export SPARK_MASTER_OPTS="-Dspark.deploy.defaultCores=<value>"

这在共享群集中非常有用,在共享群集中,用户可能没有单独配置最大数量的内核。

  

您需要从内核角度更深入地了解它。