Spark会忽略SPARK_WORKER_MEMORY吗?

时间:2016-01-13 09:07:58

标签: apache-spark

我使用的是独立群集模式,1.5.2。

即使我在SPARK_WORKER_MEMORY中设置spark-env.sh,也会忽略此设置。

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

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

[hadoop@sl-env1-hadoop1 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

我错过了什么吗?

感谢。

4 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

您在群集模式下使用了错误的设置。

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

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

另外,从命令行设置执行程序内存:-Dspark.executor.memory=2g

对于有关这些设置的另一个相关SE问题,请稍等:

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

答案 2 :(得分:0)

这是我在spark-default.conf

上的群集模式配置
spark.driver.memory 5g
spark.executor.memory   6g
spark.executor.cores    4

有没有这样的东西?

如果您不添加此代码(使用您的选项),Spark执行器将默认获得1GB的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

尝试检查master(ip / master of master):8080运行应用程序时如果资源分配正确。

答案 3 :(得分:0)

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

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

这是我找到解释的地方: How to set Apache Spark Executor memory