火花内存开销

与火花内存开销相关的问题在SO中多次问过,我经历了其中的大多数。但是,浏览了多个博客后,我感到困惑。

下面是我的问题

  • 内存开销是执行程序内存的一部分还是 分离?很少有博客说内存开销是其中的一部分 执行者的记忆和其他人说执行者的记忆+记忆 开销(这意味着内存开销不是执行程序的一部分 记忆)?
  • 内存开销和堆外转移是否相同?
  • 如果我在其中未提及管理费用会发生什么 spark-submit,是否默认为18.75?
  • 如果我们提供比默认值更多的内存开销,会不会有副作用?

https://docs.qubole.com/en/latest/user-guide/engines/spark/defaults-executors.html https://spoddutur.github.io/spark-notes/distribution_of_executors_cores_and_memory_for_spark_application.html

以下是我想了解的情况。 我有5个节点,每个节点有16个vcore和128GB内存(其中120个可用),现在我想提交spark应用程序,下面是我正在考虑的conf

Total Cores 16 * 5 = 80
Total Memory 120 * 5 = 600GB

情况1:执行程序内存的内存开销部分

spark.executor.memory=32G
spark.executor.cores=5
spark.executor.instances=14 (1 for AM)
spark.executor.memoryOverhead=8G ( giving more than 18.75% which is default)
spark.driver.memoryOverhead=8G
spark.driver.cores=5

情况2:内存开销不是执行程序内存的一部分

spark.executor.memory=28G
spark.executor.cores=5
spark.executor.instances=14 (1 for AM)
spark.executor.memoryOverhead=6G ( giving more than 18.75% which is default)
spark.driver.memoryOverhead=6G
spark.driver.cores=5

根据下面的视频,我正在尝试使用85%的节点,即120GB中的大约100GB,不确定是否可以使用更多的节点。

https://www.youtube.com/watch?v=ph_2xwVjCGs&list=PLdqfPU6gm4b9bJEb7crUwdkpprPLseCOB&index=8&t=1281s(4:12)

iCMS 回答:火花内存开销

要回答您的问题执行器内存中的内存开销是一部分还是单独的内存开销不是执行程序内存的一部分。

资源管理器启动容器以便在其中执行执行程序。因此,基本上执行程序内存+内存开销=容器内存.....火花已将执行程序内存分解为应用程序内存和缓存内存。

执行器内存开销主要包括堆外内存和nio缓冲区以及用于运行特定于容器的线程(线程堆栈)的内存。 如果您未指定内存开销,则资源管理器将使用默认值来计算内存开销值,并相应地启动容器。

始终建议保留操作系统的内核和内存(对于nodemanager来说,这是1内核,对于其他守护程序,它是1内核;对于其他操作系统,这是2内核,以使其达到最佳工作状态)

您可以像下面提到的那样更改您的计算 12 * 5 = 60cores和总内存116 * 5 = 580GB是可用的总资源..然后您相应地调整其他参数。

本文链接:https://www.f2er.com/1690955.html

大家都在问