gpt4 book ai didi

apache-spark - 容器因超出内存限制而被 YARN 杀死

转载 作者:行者123 更新时间:2023-12-04 05:22:59 25 4
gpt4 key购买 nike

我正在 google dataproc 中创建一个具有以下特征的集群:

Master Standard (1 master, N workers)
Machine n1-highmem-2 (2 vCPU, 13.0 GB memory)
Primary disk 250 GB

Worker nodes 2
Machine type n1-highmem-2 (2 vCPU, 13.0 GB memory)
Primary disk size 250 GB

我也在添加 Initialization actions .sh来自此的文件 repository为了使用齐柏林飞艇。

我使用的代码可以很好地处理某些数据,但是如果我使用更多的数据,则会出现以下错误:
Container killed by YARN for exceeding memory limits. 4.0 GB of 4 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.

我见过这样的帖子: Container killed by YARN for exceeding memory...哪里建议改 yarn.nodemanager.vmem-check-enabledfalse .

我有点困惑。当我初始化集群时是否所有这些配置都发生了?

还有 yarn-site.xml究竟在哪里位于?我无法在 master 中找到它(无法在 /usr/lib/zeppelin/conf//usr/lib/spark/conf/usr/lib/hadoop-yar/ 中找到)来更改它,如果更改了,我需要“重新启动”什么?

最佳答案

Igor 是对的,最简单的方法是创建一个集群并在启动服务之前指定要设置的任何其他属性。

然而,完全禁用 YARN 检查容器是否在其范围内有点可怕。无论哪种方式,您的 VM 最终都会耗尽内存。

错误信息是正确的——你应该尝试提高 spark.yarn.executor.memoryOverhead .默认为 max(384m, 0.1 * spark.executor.memory) .在 n1-highmem-2 上,自 spark.executor.memory=3712m 起最终为 384m .您可以在创建集群时使用 --properties spark:spark.yarn.executor.memoryOverhead=512m 设置此值。 .

如果我理解正确,JVM 和 Spark 会尝试智能地将内存使用保持在 spark.executor.memory - memoryOverhead 之内。 .但是,python 解释器(您的 pyspark 代码实际运行的地方)不在其会计范围内,而是属于 memoryOverhead .如果在python进程中使用了大量内存,则需要增加memoryOverhead .

以下是有关 pyspark 和 Spark 内存管理的一些资源:

  • How does Spark running on YARN account for Python memory usage?
  • https://spoddutur.github.io/spark-notes/distribution_of_executors_cores_and_memory_for_spark_application.html
  • http://spark.apache.org/docs/latest/tuning.html#memory-management-overview
  • 关于apache-spark - 容器因超出内存限制而被 YARN 杀死,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50587413/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com