spark在yarn上运行如何解释python内存使用情况?

k2arahey  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(489)

在阅读了文档之后,我不明白在yarn上运行spark如何解释python的内存消耗。
这算不算 spark.executor.memory , spark.executor.memoryOverhead 或者在哪里?
特别是我有一个pyspark应用程序 spark.executor.memory=25G , spark.executor.cores=4 我经常遇到因为超过内存限制而被Yarn杀死的容器。运行时出错 map 在rdd上。它在相当多的复杂python对象上运行,因此预计它将占用大量内存,但不会占用25gb。我应该如何配置不同的内存变量以用于繁重的python代码?

ncecgwcz

ncecgwcz1#

我会尽量增加记忆 spark.python.worker.memory 默认值(512m),因为python代码很繁重,并且此属性值不计入 spark.executor.memory .
聚合期间每个python工作进程使用的内存量,格式与jvm内存字符串相同(例如512m,2g)。如果聚合过程中使用的内存超过此数量,则会将数据溢出到磁盘中。链接

在spark中执行MemoryOverhead计算:

MEMORY_OVERHEAD_FRACTION = 0.10 
MEMORY_OVERHEAD_MINIMUM = 384 
val executorMemoryOverhead = 
  max(MEMORY_OVERHEAD_FRACTION * ${spark.executor.memory}, MEMORY_OVERHEAD_MINIMUM))

物业是 spark.{yarn|mesos}.executor.memoryOverhead 用于Yarn和中纤纱。
yarn杀死占用的内存比请求的内存多的进程,即 executorMemoryOverhead 以及 executorMemory .
在给定的图像中,工人使用python进程 spark.python.worker.memory ,那么 spark.yarn.executor.memoryOverhead + spark.executor.memory 是特定的jvm。

影像学分
其他资源apache邮件线程

相关问题