繁体   English   中英

为什么增加spark.yarn.executor.memoryOverhead?

[英]Why increase spark.yarn.executor.memoryOverhead?

我正在尝试加入两个大型火花数据帧并继续遇到此错误:

Container killed by YARN for exceeding memory limits. 24 GB of 22 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.

这似乎是spark用户中的一个常见问题,但我似乎无法找到spark.yarn.executor.memoryOverheard是什么的任何可靠的描述。 在某些情况下,听起来它是YARN杀死容器之前的一种内存缓冲区(例如请求10GB,但YARN在使用10.2GB之前不会杀死容器)。 在其他情况下,它听起来像是用于执行某种类型的数据记帐任务,这些任务与我想要执行的分析完全分开。 我的问题是:

  • 什么是spark.yarn.executor.memoryOverhead正在使用?
  • 增加这种内存而不是执行程序内存(或执行程序的数量)有什么好处?
  • 一般来说,我可以采取哪些步骤来减少我的spark.yarn.executor.memoryOverhead用法(例如特定的数据结构,限制数据帧的宽度,使用更少的执行器和更多的内存等)?

配置文档中很好地解释了开销选项:

这是一个内存,可以解决诸如VM开销,实习字符串,其他本机开销等问题。这往往会随着执行程序的大小而增加(通常为6-10%)。

如果您使用其中一种非JVM客户语言(Python,R等),这还包括用户对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM