【问题标题】:Container killed by YARN for exceeding memory limits.14.8 GB of 6 GB physical memory used容器因超出内存限制而被 YARN 杀死。使用了 14.8 GB 的 6 GB 物理内存
【发布时间】:2019-02-15 11:53:22
【问题描述】:

我有一份火花工作,我会做以下事情

  1. 通过 spark sql 从 parquet 加载数据并将其转换为 熊猫df。数据大小只有 250 MB
  2. 运行 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

【问题讨论】:

    标签: pyspark


    【解决方案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也在总内存分配中起作用
    猜你喜欢
    • 2019-11-06
    • 2015-12-29
    • 2017-04-08
    • 2017-11-16
    • 2020-02-09
    • 2021-06-13
    • 2016-08-24
    • 1970-01-01
    • 2023-03-04
    相关资源
    最近更新 更多