如何为apache spark worker更改每个节点的内存

Ha *_*ham 33 memory config cluster-computing apache-spark

我正在配置Apache Spark集群.

当我使用1个主服务器和3个从服务器运行集群时,我在主监视器页面上看到了这一点:

Memory
2.0 GB (512.0 MB Used)
2.0 GB (512.0 MB Used)
6.0 GB (512.0 MB Used)
Run Code Online (Sandbox Code Playgroud)

我想为工作人员增加使用的内存,但我找不到合适的配置.我已将spark-env.sh更改为如下:

export SPARK_WORKER_MEMORY=6g
export SPARK_MEM=6g
export SPARK_DAEMON_MEMORY=6g
export SPARK_JAVA_OPTS="-Dspark.executor.memory=6g"
export JAVA_OPTS="-Xms6G -Xmx6G"
Run Code Online (Sandbox Code Playgroud)

但是用过的内存仍然是一样的.我该怎么做才能改变用过的内存?

sam*_*est 16

使用1.0.0+并使用spark-shell或spark-submit时,请使用该--executor-memory选项.例如

spark-shell --executor-memory 8G ...
Run Code Online (Sandbox Code Playgroud)

0.9.0及以下:

当您启动作业或启动shell时更改内存.我们必须修改spark-shell脚本,以便它通过作为底层java应用程序的参数来携带命令行参数.特别是:

OPTIONS="$@"
...
$FWDIR/bin/spark-class $OPTIONS org.apache.spark.repl.Main "$@"
Run Code Online (Sandbox Code Playgroud)

然后我们可以运行我们的spark shell,如下所示:

spark-shell -Dspark.executor.memory=6g
Run Code Online (Sandbox Code Playgroud)

当为独立jar配置它时,我在创建spark上下文之前以编程方式设置系统属性,并将值作为命令行参数传递(我可以使它比长卷绕系统道具更短).

System.setProperty("spark.executor.memory", valueFromCommandLine)
Run Code Online (Sandbox Code Playgroud)

至于更改默认的群集范围,抱歉,不完全确定如何正确地执行它.

最后一点 - 我有点担心你有2个节点2GB和一个6GB节点.你可以使用的内存将限制在最小的节点 - 所以这里2GB.

  • `spark.executor.memory`是应用程序(作业)使用的内存,而不是为worker分配的内存. (7认同)

小智 13

在Spark 1.1.1中,设置工作人员的最大内存.在conf/spark.env.sh中,写下:

export SPARK_EXECUTOR_MEMORY=2G
Run Code Online (Sandbox Code Playgroud)

如果尚未使用配置文件,请复制模板文件

cp conf/spark-env.sh.template conf/spark-env.sh
Run Code Online (Sandbox Code Playgroud)

然后进行更改,不要忘记采购它

source conf/spark-env.sh
Run Code Online (Sandbox Code Playgroud)


Ha *_*ham 10

在我的情况下,我使用ipython笔记本电脑服务器连接到spark.我想为执行者增加内存.

这就是我做的:

from pyspark import SparkContext
from pyspark.conf import SparkConf

conf = SparkConf()
conf.setMaster(CLUSTER_URL).setAppName('ipython-notebook').set("spark.executor.memory", "2g")

sc = SparkContext(conf=conf)
Run Code Online (Sandbox Code Playgroud)

  • 我正在寻找如何在ipython中设置内存2天,而你的内存是唯一适合我的内存. (2认同)

Fuz*_*zzY 9

根据Spark文档,您可以在提交应用程序时使用命令行参数更改每个节点内存--executor-memory.例如

./bin/spark-submit \
  --class org.apache.spark.examples.SparkPi \
  --master spark://master.node:7077 \
  --executor-memory 8G \
  --total-executor-cores 100 \
  /path/to/examples.jar \
  1000
Run Code Online (Sandbox Code Playgroud)

我已经测试过它的确有效.