2016-09-17 57 views
3

我們在Docker容器中運行Spark驅動程序和執行程序,由Kubernetes編寫。我們希望能夠在運行時通過Kubernetes控制器YAML爲它們設置Java堆大小。
必須設置什麼Spark配置來執行此操作?如果我通過ps -ef什麼也不做,並期待在啓動過程中,我看到:你如何重寫Spark Java堆大小?

root  639 638 0 00:16 ?  00:00:23 /opt/ibm/java/jre/bin/java -cp /opt/ibm/spark/conf/:/opt/ibm/spark/lib/spark-assembly-1.5.2-hadoop2.6.0.jar:/opt/ibm/spark/lib/datanucleus-api-jdo-3.2.6.jar:/opt/ibm/spark/lib/datanucleus-core-3.2.10.jar:/opt/ibm/spark/lib/datanucleus-rdbms-3.2.9.jar:/opt/ibm/hadoop/conf/ -Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=172.17.48.29:2181,172.17.231.2:2181,172.17.47.17:2181 -Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=172.17.48.29:2181,172.17.231.2:2181,172.17.47.17:2181 -Dcom.ibm.apm.spark.logfilename=master.log -Dspark.deploy.defaultCores=2 **-Xms1g -Xmx1g** org.apache.spark.deploy.master.Master --ip sparkmaster-1 --port 7077 --webui-port 18080 

東西被設置-Xms和-Xmx選項。我試着在spark-env.sh設置SPARK_DAEMON_JAVA_OPTS="-XmsIG -Xms2G"並獲得:

root  2919 2917 2 19:16 ?  00:00:15 /opt/ibm/java/jre/bin/java -cp /opt/ibm/spark/conf/:/opt/ibm/spark/lib/spark-assembly-1.5.2-hadoop2.6.0.jar:/opt/ibm/spark/lib/datanucleus-api-jdo-3.2.6.jar:/opt/ibm/spark/lib/datanucleus-core-3.2.10.jar:/opt/ibm/spark/lib/datanucleus-rdbms-3.2.9.jar:/opt/ibm/hadoop/conf/ -Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=172.17.48.29:2181,172.17.231.2:2181,172.17.47.17:2181 **-Xms1G -Xmx2G** -Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=172.17.48.29:2181,172.17.231.2:2181,172.17.47.17:2181 **-Xms1G -Xmx2G** -Dcom.ibm.apm.spark.logfilename=master.log -Dspark.deploy.defaultCores=2 **-Xms1g -Xmx1g** org.apache.spark.deploy.master.Master --ip sparkmaster-1 --port 7077 --webui-port 18080 

一個朋友建議設置

spark.driver.memory2克

spark-defaults.conf,但結果看起來像第一個例子。也許ps -ef命令中的值被此設置覆蓋,但我怎麼知道?如果spark.driver.memory是正確的覆蓋,你可以用這種方法設置最小和最大堆,還是隻設置最大值?

在此先感謝。

+1

我想我誤解了你。 'SPARK_DAEMON_MEMORY'? – zero323

+0

就是這樣!謝謝! – cbarlock

回答