spark内存开销

vwkv1x7d  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(436)

Spark内存开销相关的问题问了很多次,所以,我通过了大多数。然而,在浏览了多个博客之后,我感到困惑。
下面是我的问题
内存开销是执行器内存的一部分还是单独的?因为很少有博客说内存开销是executor内存的一部分,其他博客说executor内存+内存开销(这是不是意味着内存开销不是executor内存的一部分)?
内存开销和堆外开销是一样的吗?
如果我没有在spark提交中提到开销,会发生什么呢?默认值是18.75还是不会?
如果我们给出的内存开销大于默认值,会有任何副作用吗?
https://docs.qubole.com/en/latest/user-guide/engines/spark/defaults-executors.htmlhttpshttp://spoddutur.github.io/spark-notes/distribution\u executors\u cores\u and \u memory\u for \u spark\u application.html
下面是我想了解的情况。我有5个节点,每个节点16个vcores和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%的节点,即大约100gb的120gb,不确定我们是否可以使用更多。
https://www.youtube.com/watch?v=ph_2xwvjcgs&list=pldqfpu6gm4b9bjeb7cruwdkpprplsecob&index=8&t=1281s (4:12)

tmb3ates

tmb3ates1#

回答您的问题:内存开销是执行器内存的一部分还是单独的?内存开销不是执行器内存的一部分。
资源管理器启动容器以执行其中的执行器。所以基本上执行器内存+内存开销=容器内存。。。。。spark将执行器内存分为应用程序内存和缓存内存。
执行器内存开销主要包括堆外内存和nio缓冲区以及用于运行特定于容器的线程(线程堆栈)的内存。如果不指定内存开销,资源管理器将使用默认值计算内存开销值,并相应地启动容器。
始终建议为操作系统保留内核和内存(即1个内核用于节点管理器,1个内核用于其他守护进程,2个内核用于操作系统以最佳方式工作)
您可以像下面提到的那样更改计算125=60核,总内存1165=580gb是可用的总资源。。然后相应地调整其他参数。

相关问题