在哪里设置 "spark.yarn.executor.memoryOverhead"
Where to set "spark.yarn.executor.memoryOverhead"
我在 运行 我的 spark-scala 程序中出现以下错误。
YarnSchedulerBackends$YarnSchedulerEndpoint:容器因超出内存限制而被 YARN 杀死。使用了 2.6GB 的 2.5GB 物理内存。考虑提升 spark.yarn.executor.memoryOverhead.
我在创建SparkSession的时候在程序里设置了spark.yarn.executor.memoryOverhead
我的问题是 - 在创建 SparkSession 时设置 "spark.yarn.executor.memoryOverhead" 是否可以,还是应该在运行时使用 spark-submit 传递?
您必须在创建 sparkSession 时设置 spark.yarn.executor.memoryOverhead
。此参数用作要为每个执行程序分配的堆外内存量(以兆字节为单位)。这是内存,用于解释 VM 开销、驻留字符串、其他本机开销等。这往往会随着执行程序的大小(通常为 6-10%)而增长。
现在这个分配只能在执行器分配时完成,不能在运行时完成。
我在 运行 我的 spark-scala 程序中出现以下错误。
YarnSchedulerBackends$YarnSchedulerEndpoint:容器因超出内存限制而被 YARN 杀死。使用了 2.6GB 的 2.5GB 物理内存。考虑提升 spark.yarn.executor.memoryOverhead.
我在创建SparkSession的时候在程序里设置了spark.yarn.executor.memoryOverhead
我的问题是 - 在创建 SparkSession 时设置 "spark.yarn.executor.memoryOverhead" 是否可以,还是应该在运行时使用 spark-submit 传递?
您必须在创建 sparkSession 时设置 spark.yarn.executor.memoryOverhead
。此参数用作要为每个执行程序分配的堆外内存量(以兆字节为单位)。这是内存,用于解释 VM 开销、驻留字符串、其他本机开销等。这往往会随着执行程序的大小(通常为 6-10%)而增长。
现在这个分配只能在执行器分配时完成,不能在运行时完成。