前言

本文隶属于专栏《Spark 配置参数详解》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和参考文献请见 Spark 配置参数详解

正文

spark.executor.memoryOverhead

注意: Spark 2.3 前,这个参数名为:spark.yarn.executor.memoryOverhead

在 YARN,K8S 部署模式下,container 会预留一部分内存,形式是堆外,用来保证稳定性,主要存储nio buffer,函数栈等一些开销

这部分内存,你不用管堆外还是堆内,开发者用不到,spark也用不到,

所以不用关心,千万不指望调这个参数去提升性能,它的目的是保持运行时的稳定性

内存设置

可以参考下图了解 YARN Container 和 Executor 是如何在内存中设置的:

在这里插入图片描述

Spark Executor 使用的内存已超过预定义的限制(通常由个别的高峰期导致的),这导致 YARN 使用前面提到的消息错误杀死 Container。

默认

默认情况下,“spark.executor.memoryOverhead”参数设置为 384 MB。

根据应用程序和数据负载的不同,此值可能较低。

此参数的建议值为“executorMemory * 0.10”。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐