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

Memory 如何为apache spark worker更改每个节点的内存,memory,cluster-computing,config,apache-spark,Memory,Cluster Computing,Config,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) 我想增加workers的已用内存,但找不到合适的配置。我已将spark env.sh更改如下: export SPARK_WORKER_MEMORY=6g export SPARK_MEM=6g export SPARK_DAEMON

我正在配置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)
我想增加workers的已用内存,但找不到合适的配置。我已将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"

但是使用的内存仍然是一样的。如何更改已用内存?

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

spark-shell --executor-memory 8G ...
./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
0.9.0及以下版本:

当您启动作业或启动shell时,请更改内存。我们必须修改sparkshell脚本,使其能够作为底层java应用程序的参数携带命令行参数。特别是:

OPTIONS="$@"
...
$FWDIR/bin/spark-class $OPTIONS org.apache.spark.repl.Main "$@"
然后,我们可以按如下方式运行spark shell:

spark-shell -Dspark.executor.memory=6g
在为独立jar配置它时,我在创建spark上下文之前以编程方式设置了system属性,并将该值作为命令行参数传入(我可以使其比冗长的系统道具更短)

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


最后一点——我有点担心的是,您有两个2GB的节点和一个6GB的节点。您可以使用的内存将被限制在最小的节点上,因此这里是2GB。

工作进程的默认配置是为每个工作进程分配
主机内存-1Gb
。手动调整该值的配置参数为
SPARK\u WORKER\u MEMORY
,如您的问题所示:


export SPARK\u WORKER\u MEMORY=6g

在我的情况下,我使用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)
根据,您可以在提交应用程序时使用命令行参数--executor Memory更改每个节点的内存。例如

spark-shell --executor-memory 8G ...
./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

我已经测试过了,它可以工作。

在Spark 1.1.1中,设置workers的最大内存。 在conf/spark.env.sh中,写下以下内容:

export SPARK_EXECUTOR_MEMORY=2G
如果尚未使用配置文件,请复制模板文件

cp conf/spark-env.sh.template conf/spark-env.sh
然后进行更改,别忘了寻找来源

source conf/spark-env.sh

spark.executor.memory
是应用程序(作业)使用的内存,而不是为工作程序分配的内存。理想情况下,您可以在spark.env.sh文件中设置该值。这使您可以设置默认值,而无需每次运行shell时都传入参数。我明白您的意思,这就是问题的措辞,但我怀疑这正是他想要的,尽管从他在主监视器页面上的描述来看。@massag在我的情况下,每个工作人员默认只使用512MB。当我添加设置时
export SPARK\u WORKER\u MEMORY=6g
。它不会增加工作人员的内存。在主控显示器页面上,我仍然看到每个工人的内存为512MB。主控页面显示工人的总内存和作业当前使用的内存。您的工作区总内存为2/2/6Gb,目前使用的内存为512Mb。这是任务执行者的内存使用情况。要更改此设置,请使用
spark.executor.memory
。请参阅@samthebest answer@massag我想增加任务执行器的内存使用量。我已经将这一行
export SPARK\u JAVA\u OPTS=“-Dspark.executor.memory=6g”
添加到SPARK-env.sh,但仍然是512MB。什么是正确的方法呢?我对这个不好的问题也有同样的疑问。我发现我想更改执行者的内存。现在,执行器只使用
2.0 GB(使用512.0 MB)
。如何通过更改配置或系统环境来增加内存?这在Spark 1.3.0中对我很有效(没有导出)。我确实找到了spark-env.sh的来源though@tristan-wu不是专门为纱线设计的吗?我一直在寻找如何在ipython中设置2天的记忆,而你的记忆是唯一对我有效的。是的,这是唯一对我有效的东西,让我走出1024MB的地狱!:D