【问题标题】:Container killed by YARN for exceeding memory limits in Spark Scala因超过 Spark Scala 中的内存限制而被 YARN 杀死的容器
【发布时间】:2021-06-13 12:33:18
【问题描述】:

我在使用 Spark-submit 命令运行我的 Spark Scala 代码时遇到以下错误。

错误 cluster.YarnClusterScheduler: Lost executor 14 on XXXX: 容器因超出内存限制而被 YARN 杀死。使用了 55.6 GB 的 55 GB 物理内存。

它引发错误的行号代码如下...

df.write.mode("overwrite").parquet("file")

我正在编写 Parquet 文件....它一直工作到昨天不确定从上次运行开始只是它使用相同的输入文件抛出错误。

谢谢, 纳文

【问题讨论】:

  • 您是来自 Hive 还是 HDFS 的数据?看来,问题不在于您的程序,但您的程序正在抓取的执行程序数量少于您的应用程序所需的数量。您的管理员可能已经为每个执行程序设置了超出的内存限制。 spark动态分配是打开还是关闭?
  • 将其写入 HDFS ...关于 Spark 动态分配,我在 spark-submit 命令中使用下面的 conf --conf spark.dynamicAllocation.enabled=
  • 你能检查一下你的dag,执行者在什么阶段被杀?您是否正在使用和改组导致此问题的操作?
  • 实际上我确实使用了 --conf spark.dynamicAllocation.enabled=false 可以吗?还是我应该使用 true?
  • 您的应用程序需要更多的执行器使 --conf spark.dynamicAllocation.enabled=true。你的工作应该有效。

标签: scala apache-spark


【解决方案1】:

通过在 spark-submit 命令中使用以下 conf 运行,问题得到解决,代码运行成功。

--conf spark.dynamicAllocation.enabled=true

谢谢, 纳文

【讨论】:

    猜你喜欢
    • 2017-11-16
    • 2016-08-24
    • 2020-02-09
    • 2019-11-06
    • 1970-01-01
    • 1970-01-01
    • 2017-04-04
    • 2015-12-29
    • 2017-04-08
    相关资源
    最近更新 更多