我正在尝试合并两个大的Spark数据框架,但是一直遇到这个错误:
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.memoryOverhead的详细描述。在某些情况下,它似乎是YARN在杀死容器之前的一种内存缓冲区(例如请求了10GB,但YARN在使用10.2GB之前不会杀死容器)。在其他情况下,它似乎用于执行某些与我要执行的分析完全无关的数据账户任务。我的问题是:
- spark.yarn.executor.memoryOverhead的用途是什么?
- 增加这种内存的好处是什么,而不是增加executor内存(或executor数量)?
- 一般来说,有哪些步骤可以减少spark.yarn.executor.memoryOverhead的使用(例如特定的数据结构、限制数据框架的宽度、使用更多内存的较少executor等)?
String
常量。 - Alper t. Turker