2016-01-13 68 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