在阅读了文档之后,我不明白在yarn上运行spark如何解释python的内存消耗。
这算不算 spark.executor.memory
, spark.executor.memoryOverhead
或者在哪里?
特别是我有一个pyspark应用程序 spark.executor.memory=25G
, spark.executor.cores=4
我经常遇到因为超过内存限制而被Yarn杀死的容器。运行时出错 map
在rdd上。它在相当多的复杂python对象上运行,因此预计它将占用大量内存,但不会占用25gb。我应该如何配置不同的内存变量以用于繁重的python代码?
1条答案
按热度按时间ncecgwcz1#
我会尽量增加记忆
spark.python.worker.memory
默认值(512m),因为python代码很繁重,并且此属性值不计入spark.executor.memory
.聚合期间每个python工作进程使用的内存量,格式与jvm内存字符串相同(例如512m,2g)。如果聚合过程中使用的内存超过此数量,则会将数据溢出到磁盘中。链接
在spark中执行MemoryOverhead计算:
物业是
spark.{yarn|mesos}.executor.memoryOverhead
用于Yarn和中纤纱。yarn杀死占用的内存比请求的内存多的进程,即
executorMemoryOverhead
以及executorMemory
.在给定的图像中,工人使用python进程
spark.python.worker.memory
,那么spark.yarn.executor.memoryOverhead
+spark.executor.memory
是特定的jvm。影像学分
其他资源apache邮件线程