2013-06-18 56 views
8

在spark-env.sh,它可以配置以下环境变量:星火配置:SPARK_MEM与SPARK_WORKER_MEMORY

# - 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 

如果我开始与这个独立的集群:

$SPARK_HOME/bin/start-all.sh 

我可以在Spark Master UI网页上看到,所有工作人员仅以3GB RAM开始:

-- Workers Memory Column -- 
22.0 GB (3.0 GB Used) 
22.0 GB (3.0 GB Used) 
22.0 GB (3.0 GB Used) 
[...] 

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

我对此有些困惑。可能我不明白“节点”和“工人”之间的区别。

有人可以解释两种记忆设置和我可能做错了什么区别?

我正在使用spark-0.7.0。有关更多配置信息,另请参阅here

回答

10

独立群集可以托管多个Spark群集(每个“群集”绑定到特定的SparkContext)。即您可以让一个群集运行kmeans,一个群集运行Shark,另一个运行一些交互式数据挖掘。

在这种情况下,22GB是您分配给Spark独立群集的内存总量,并且您的特定SparkContext实例每个节点使用3GB。所以你可以创建另外6个SparkContext,最多可以使用21GB。