【问题标题】:Spark configuration, what is the difference of SPARK_DRIVER_MEMORY, SPARK_EXECUTOR_MEMORY, and SPARK_WORKER_MEMORY?Spark配置,SPARK_DRIVER_MEMORY、SPARK_EXECUTOR_MEMORY、SPARK_WORKER_MEMORY有什么区别?
【发布时间】:2015-07-09 09:48:10
【问题描述】:
我做了我的工作,阅读https://spark.apache.org/docs/latest/configuration.html的文档
在 spark-folder/conf/spark-env.sh:
-
SPARK_DRIVER_MEMORY,主内存(例如 1000M、2G)(默认:512 Mb)
-
SPARK_EXECUTOR_MEMORY,每个 Worker 的内存(例如 1000M,2G)(默认:1G)
-
SPARK_WORKER_MEMORY,设置worker必须给executors的总内存量(例如1000m,2g)
以上3个参数是什么关系?
据我了解,DRIVER_MEMORY 是主节点/进程可以请求的最大内存。但是对于司机来说,多机情况如何,例如。 1台master机器2台worker机器,worker机器也应该有一些内存可用于spark driver?
EXECUTOR_MEMORY 和 WORKER_MEMORY 对我来说是一样的,只是名字不同,请问这个也可以解释一下吗?
非常感谢。
【问题讨论】:
标签:
linux
memory
apache-spark
environment-variables
config
【解决方案1】:
首先,您应该知道 1 个 Worker(可以说是 1 台机器或 1 个 Worker Node)可以启动多个 Executors(或多个 Worker Instances - 他们在文档中使用的术语)。
-
SPARK_WORKER_MEMORY 仅用于独立部署模式
-
SPARK_EXECUTOR_MEMORY 用于 YARN 部署模式
在独立模式下,您将SPARK_WORKER_MEMORY 设置为可在一台机器(这台机器上的所有执行程序)上运行您的 spark 应用程序的内存总量。
相比之下,在 YARN 模式下,您将 SPARK_DRIVER_MEMORY 设置为 一个 Executor
的内存
-
SPARK_DRIVER_MEMORY 用于 YARN 部署模式,为运行应用程序并与集群管理器通信的驱动程序指定内存。