我在没有hadoop / yarn的服务器(8vCores和64GB RAM)中安装了spark。正在运行具有以下属性的作业。
spark.executor.instances=4
spark.executor.memory=6g
spark.executor.cores=4
spark.driver.memory=16g
从最上面的命令中,我看到程序占用了22.3gb的内存。您能否让我知道当我们独立运行时将创建多少个执行器。
谢谢
答案 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>"
这在共享群集中非常有用,在共享群集中,用户可能没有单独配置最大数量的内核。
您需要从内核角度更深入地了解它。