Overhead:Spark内存开销(spark memory overhead)

Spark 内存开销相关问题在 SO 中多次询问,我经历了大部分。然而,在经历了多个博客之后,我感到困惑。

下面是我的问题

内存开销是 executor 内存的一部分还是单独的?因为很少有博客说内存开销是 executor 内存的一部分,而其他人则说 executor 内存 + 内存开销(这意味着内存开销不是 executor 内存的一部分)?

内存开销和堆外是一样的?

如果我没有提到开销作为火花提交的一部分,会发生什么,它会采取默认 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 个可用),现在我想提交火花应用程序,下面是 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 % 的节点,即大约 100GB 的 120GB,不知道我们是否可以使用更多。

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

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

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

executor 内存开销主要包括堆外内存和 nio buffer 以及运行容器特定线程 (线程栈) 的内存,当您不指定内存开销时,Resource manager 会使用默认值计算内存开销值,并相应地启动容器。

始终建议为 OS 留出内核和内存(对于 nodemanager 为 1 个内核,对于其他守护进程为 1 个内核,对于 OS 为 2 个内核以最佳方式工作)

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

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(920)
应用价值:在具有应用价值的数据框中使用 fillna
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(84条)