【问题标题】:Container killed by YARN for exceeding memory limits. 52.6 GB of 50 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead因超出内存限制而被 YARN 杀死的容器。使用了 52.6 GB 的 50 GB 物理内存。考虑提升 spark.yarn.executor.memoryOverhead
【发布时间】:2015-12-29 11:50:37
【问题描述】:

使用 1 TB 数据运行 spark 作业,配置如下:

33G 执行器内存 40名执行人 每个执行器 5 个核心

17 g 内存开销

这个错误的可能原因是什么?

【问题讨论】:

  • 如果您可以在控制台中发布完整的错误信息会有所帮助
  • 你考虑过提升 spark.yarn.executor.memoryOverhead 吗?
  • 感谢lxg的回复。 spark.yarn.executor.memoryOverhead 是 0.1 的执行器内存,我已经给了它 0.5 的执行器内存。我应该增加多少以及导致此警告的背景发生的情况

标签: apache-spark hadoop-yarn


【解决方案1】:

你从哪里得到这个警告的?哪些特定的日志?你很幸运,你甚至会收到警告:)。确实 17g 似乎足够了,但是你确实有 1TB 的数据。我不得不使用更多的 30g 来获得比这更少的数据。

错误的原因是 yarn 为容器使用了额外的内存,而这些容器并不存在于执行程序的内存空间中。我注意到更多的任务(分区)意味着使用更多的内存,并且随机播放通常更重,除了我没有看到与我所做的任何其他对应关系。不知何故,某种东西正在不必要地吞噬内存。

似乎世界正在向 Mesos 迁移,也许它没有这个问题。更好的是,只需单独使用 Spark。

更多信息:http://www.wdong.org/wordpress/blog/2015/01/08/spark-on-yarn-where-have-all-my-memory-gone/。这个链接似乎有点死了(这是对 YARN 吞噬内存方式的深入探讨)。此链接可能有效:http://m.blog.csdn.net/article/details?id=50387104。如果不尝试谷歌搜索“我所有的记忆都消失在纱线上的火花”

【讨论】:

  • 正如@BarbarosAlp 提到的,链接是404! 总是在您的问题中提供链接的要点......
  • @gsamaras 更新
  • Sam,抱歉,第一个链接仍然失效..:/
【解决方案2】:

一个可能的问题是您的虚拟内存与物理内存的比例变得非常大。您可能想在 yarn-site.xml 中将 yarn.nodemanager.vmem-check-enabled 设置为 false 以查看会发生什么。如果错误停止,那么这可能就是问题所在。

我在其他地方回答了类似的问题,并在那里提供了更多信息:https://stackoverflow.com/a/42091255/3505110

【讨论】:

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