Spark配置:SPARK_MEM与SPARK_WORKER_MEMORY

pti*_*obj 9 scala mapreduce apache-spark

在spark-env.sh中,可以配置以下环境变量:

# - SPARK_WORKER_MEMORY, to set how much memory to use (e.g. 1000m, 2g)
export SPARK_WORKER_MEMORY=22g
[...]
# - SPARK_MEM, to change the amount of memory used per node (this should
#   be in the same format as the JVM's -Xmx option, e.g. 300m or 1g)
export SPARK_MEM=3g
Run Code Online (Sandbox Code Playgroud)

如果我用这个启动一个独立的集群:

$SPARK_HOME/bin/start-all.sh
Run Code Online (Sandbox Code Playgroud)

我可以在Spark Master UI网页上看到所有工作人员只有3GB内存:

-- Workers Memory Column --
22.0 GB (3.0 GB Used)
22.0 GB (3.0 GB Used)
22.0 GB (3.0 GB Used)
[...]
Run Code Online (Sandbox Code Playgroud)

但是,我在spark-env.sh中将22g指定为SPARK_WORKER_MEMORY

我有点困惑.可能我不明白"节点"和"工人"之间的区别.

有人可以解释两个内存设置之间的差异以及我可能做错了什么吗?

我正在使用spark-0.7.0.有关更多配置信息,另请参见此处.

rxi*_*xin 11

独立群集可以托管多个Spark群集(每个"群集"都绑定到特定的SparkContext).即你可以有一个运行kmeans的集群,一个运行Shark的集群,另一个运行一些交互式数据挖掘的集群.

在这种情况下,22GB是您分配给Spark独立群集的内存总量,并且您的特定SparkContext实例每个节点使用3GB.因此,您可以使用高达21GB的内容再创建6个SparkContext.