容器因超出内存限制而被 YARN 杀死。使用了 14.8 GB 的 6 GB 物理内存
Posted
技术标签:
【中文标题】容器因超出内存限制而被 YARN 杀死。使用了 14.8 GB 的 6 GB 物理内存【英文标题】:Container killed by YARN for exceeding memory limits.14.8 GB of 6 GB physical memory used 【发布时间】:2019-02-15 11:53:22 【问题描述】:我有一份火花工作,我会做以下事情
-
通过 spark sql 从 parquet 加载数据并将其转换为
熊猫df。数据大小只有 250 MB
运行 rdd.foreach 以
迭代相对一些数据集(1000行)并取
pandas df 从第 1 步开始并进行一些转换。
在一些迭代后,由于超出内存限制错误,我得到一个被 YARN 杀死的容器。
Container killed by YARN for exceeding memory limits. 14.8 GB of 6 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead
我无法理解为什么错误显示使用了 14.8 GB 的 6 GB 物理内存?
我尝试增加 spark.yarn.executor.memoryOverhead 我使用了以下命令
spark-submit --master yarn --deploy-mode cluster --num-executors 4 --executor-cores 2 --executor-memory 2G --conf spark.yarn.executor.memoryOverhead=4096 --py-文件 test.zip app_main.py
我正在使用火花 2.3
yarn.scheduler.minimum-allocation-mb = 512 MB
yarn.nodemanager.resource.memory-mb = 126 GB
【问题讨论】:
【参考方案1】:这是使用 memoryOverhead 选项时的常见错误之一,最好使用其他选项来调整作业。
http://ashkrit.blogspot.com/2018/09/anatomy-of-apache-spark-job.html 帖子讨论了这个问题以及如何处理它。
【讨论】:
感谢您的回复。您能推断出为什么错误指出使用了 14.8 GB 的 6 GB 物理内存吗?正如我提到的 2GB 执行器内存 + 4GB 执行器内存开销 既然你用的是python,spark.python.worker.memory也在总内存分配中起作用以上是关于容器因超出内存限制而被 YARN 杀死。使用了 14.8 GB 的 6 GB 物理内存的主要内容,如果未能解决你的问题,请参考以下文章