Spark 配置:SPARK_MEM 与 SPARK_WORKER_MEMORY

Posted

技术标签:

【中文标题】Spark 配置:SPARK_MEM 与 SPARK_WORKER_MEMORY【英文标题】:Spark Configuration: SPARK_MEM vs. SPARK_WORKER_MEMORY 【发布时间】:2013-06-14 20:00:06 【问题描述】:

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

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

谁能解释这两种内存设置之间的区别以及我可能做错了什么?

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于Spark 配置:SPARK_MEM 与 SPARK_WORKER_MEMORY的主要内容,如果未能解决你的问题,请参考以下文章

Spark: Spark-sql 读hbase

在执行spar-sql程序中报错:java.lang.NoSuchMethodError: org.apache.spark.internal.Logging.$init$(Lorg/apache/s

Spark启动时报错localhost: failed to launch: nice -n 0 /home/chan/spark/spark-2.4.3-bin-hadoop2.7/bin/spar

Spark基础学习笔记02:搭建Spark环境

Spark中配置参数的优化

实验7 Spark初级编程实践