scala - Spark配置: SPARK_MEM vs. SPARK_WORKER_MEMORY

标签 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

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

$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

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

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

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

最佳答案

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

在本例中,22GB 是您分配给 Spark 独立集群的内存总量,并且您的特定 SparkContext 实例每个节点使用 3GB。因此,您可以使用最多 21GB 来创建另外 6 个 SparkContext。

关于scala - Spark配置: SPARK_MEM vs. SPARK_WORKER_MEMORY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17171686/

相关文章:

Scala groupBy + mapValues 与 groupBy + map + BreakOut

python - 如何使用Ruby CLI客户端基于Amazon Elastic MapReduce上的JSON JobFlow描述启动JobFlow

hadoop - 为什么我们不能在 Hadoop 中计算作业执行时间?

python - Spark数据帧是否像pandas一样每行都有 "row name"?

hadoop - 在运行时(通过spark-submit)将一些hadoop配置添加到spark应用程序?

scala - Spark Latent Dirichlet Allocation模型主题矩阵太小

scala - 在列表中获取元素直到 Scala 中的限制的功能方法

oop - Scala 类继承

java - 在hadoop中创建所有成对的值列表

python - Spark Python提交错误: File does not exist: pyspark. zip