2016-01-13 70 views
0

我正在使用独立群集模式1.5.2。Spark忽略SPARK_WORKER_MEMORY?

尽管我在spark-env.sh中设置了SPARK_WORKER_MEMORY,但它看起来像忽略了这个设置。

我在bin/sbin下的脚本找不到-Xms/-Xmx设置的任何指示。

如果我使用ps命令工人pid,它看起来像内存设置为1G

[[email protected] spark-1.5.2-bin-hadoop2.6]$ ps -ef | grep 20232 
hadoop 20232  1 0 02:01 ?  00:00:22 /usr/java/latest//bin/java 
-cp /workspace/3rd-party/spark/spark-1.5.2-bin-hadoop2.6/sbin/../conf/:/workspace/ 
3rd-party/spark/spark-1.5.2-bin-hadoop2.6/lib/spark-assembly-1.5.2-hadoop2.6.0.jar:/workspace/ 
3rd-party/spark/spark-1.5.2-bin-hadoop2.6/lib/datanucleus-api-jdo-3.2.6.jar:/workspace/ 
3rd-party/spark/spark-1.5.2-bin-hadoop2.6/lib/datanucleus-rdbms-3.2.9.jar:/workspace/ 
3rd-party/spark/spark-1.5.2-bin-hadoop2.6/lib/datanucleus-core-3.2.10.jar:/workspace/ 
3rd-party/hadoop/2.6.3//etc/hadoop/ -Xms1g -Xmx1g org.apache.spark.deploy.worker.Worker 
--webui-port 8081 spark://10.52.39.92:7077 

火花defaults.conf:

spark.master   spark://10.52.39.92:7077 
spark.serializer  org.apache.spark.serializer.KryoSerializer 
spark.executor.memory 2g 
spark.executor.cores 1 

spark-env.sh:

export SPARK_MASTER_IP=10.52.39.92 
export SPARK_WORKER_INSTANCES=1 
export SPARK_WORKER_MEMORY=12g 

我错过了什么吗?

谢谢。

回答

0

使用spark-shell或spark-submit时,请使用--executor-memory选项。

将其配置为独立jar时,请在创建spark上下文前以编程方式设置系统属性。

System.setProperty("spark.executor.memory", executorMemory)

0

您正在使用群集模式设置错误。

SPARK_EXECUTOR_MEMORY是在集群模式下设置Executor内存的正确选项。

SPARK_WORKER_MEMORY仅适用于独立部署模式。

Otherway从命令行设置执行内存:-Dspark.executor.memory=2g

有在对这些设置有一个以上的相关SE问题上loook:

Spark configuration, what is the difference of SPARK_DRIVER_MEMORY, SPARK_EXECUTOR_MEMORY, and SPARK_WORKER_MEMORY?

+0

我做我的星火第一步,希望我措辞是正确的:我有5个节点集群,而不是由纱/ mesos管理,它不是独立的集群模式吗?我确实将SPARK_WORKER_MEMORY设置为12G,它确实在web ui中报告为12g,但从命令行看来,jvm仅配置为1G,正如您可以在问题的ps输出中看到的一样。 – Seffy

+1

您正在群集模式下运行,因此您正在使用以下设置:spark://10.52.39.92:7077 –

+0

不确定我明白。鉴于原来的问题更新,我使用正确的设置?为什么ps仍然会报告1G? – Seffy

1

这是我在集群模式配置,在spark-default.conf

spark.driver.memory 5g 
spark.executor.memory 6g 
spark.executor.cores 4 

有没有类似的东西?

如果您不添加此代码(使用您的选项),Spark执行程序将默认获得1g的Ram。

否则,您可以在上面添加这些选项。 /spark-submit这样的:

# Run on a YARN cluster 
export HADOOP_CONF_DIR=XXX 
./bin/spark-submit \ 
    --class org.apache.spark.examples.SparkPi \ 
    --master yarn \ 
    --deploy-mode cluster \ # can be client for client mode 
    --executor-memory 20G \ 
    --num-executors 50 \ 
    /path/to/examples.jar \ 
    1000 

尝试检查主(主的IP /名):当你,如果资源已经分配正确运行的应用程序8080。

+0

感谢您的回答。我的集群不受纱线/间距管理。我已经添加了conf文件来提问,doe是否有意义? – Seffy

+0

是的。 我发布spark-submit的例子是用于纱线。无论如何,如果你改变 “主人”的作品。 您可以添加'--executor-memory 20G' – DanieleO

+0

@DanieleO如果应用程序正在通过'spark-submit'在本地运行,该怎么办?到目前为止,通过提交选项来调整'executor-memory'并没有帮助。 –

0

我遇到了和你一样的问题。原因是,在独立模式下,spark.executor.memory实际上被忽略。有什么影响是spark.driver.memory,因为执行者生活在司机。

所以你可以做的是设置spark.driver.memory尽可能高。

这是我发现的解释: How to set Apache Spark Executor memory