我正在配置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)
我想为工作人员增加使用的内存,但我找不到合适的配置.我已将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 ...
0.9.0及以下:
当您启动作业或启动shell时更改内存.我们必须修改spark-shell脚本,以便它通过作为底层java应用程序的参数来携带命令行参数.特别是:
OPTIONS="$@" ... $FWDIR/bin/spark-class $OPTIONS org.apache.spark.repl.Main "$@"
然后我们可以运行我们的spark shell,如下所示:
spark-shell -Dspark.executor.memory=6g
当为独立jar配置它时,我在创建spark上下文之前以编程方式设置系统属性,并将值作为命令行参数传递(我可以使它比长卷绕系统道具更短).
System.setProperty("spark.executor.memory", valueFromCommandLine)
至于更改默认的群集范围,抱歉,不完全确定如何正确地执行它.
最后一点 - 我有点担心你有2个节点2GB和一个6GB节点.你可以使用的内存将限制在最小的节点 - 所以这里2GB.
在Spark 1.1.1中,设置工作人员的最大内存.在conf/spark.env.sh中,写下:
export SPARK_EXECUTOR_MEMORY=2G
如果尚未使用配置文件,请复制模板文件
cp conf/spark-env.sh.template conf/spark-env.sh
然后进行更改,不要忘记采购它
source conf/spark-env.sh
在我的情况下,我使用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)
根据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
我已经测试过它的确有效.