带有 AM Container 限制错误的 pyspark 错误

Posted

技术标签:

【中文标题】带有 AM Container 限制错误的 pyspark 错误【英文标题】:pyspark erroring with a AM Container limit error 【发布时间】:2021-12-25 20:01:44 【问题描述】:

全部,

我们在 AKS (SQLServer 2019 BDC) 上有一个 Apache Spark v3.12 + Yarn。我们将重构后的 python 代码运行到 Pyspark,导致以下错误:

应用程序 application_1635264473597_0181 失败 1 次(全局 限制=2;由于 AM Container 的本地限制为 =1) appattempt_1635264473597_0181_000001 退出,退出代码:-104

这次尝试失败。诊断:[2021-11-12 15:00:16.915]Container [pid=12990,containerID=container_1635264473597_0181_01_000001] 是 运行 7282688B 超出“物理”内存限制。当前使用情况: 使用了 2.0 GB 的 2 GB 物理内存;使用了 4.9 GB 的 4.2 GB 虚拟内存。杀死容器。

container_1635264473597_0181_01_000001 的进程树转储:

|- PID PPID PGRPID SESSID CMD_NAME USER_MODE_TIME(MILLIS) SYSTEM_TIME(MILLIS) VMEM_USAGE(BYTES) RSSMEM_USAGE(PAGES) FULL_CMD_LINE

|- 13073 12999 12990 12990 (python3) 7333 112 1516236800 235753 /opt/bin/python3 /var/opt/hadoop/temp/nm-local-dir/usercache/grajee/appcache/application_1635264473597_0181/container_1635264473597_0181_01_000001/tmp/3677222184783620782

|- 12999 12990 12990 12990 (java) 6266 586 3728748544 289538 /opt/mssql/lib/zulu-jre-8/bin/java -server -XX:ActiveProcessorCount=1 -Xmx1664m -Djava.io.tmpdir=/var/opt/hadoop/temp/nm-local-dir/usercache/grajee/appcache/application_1635264473597_0181/container_1635264473597_0181_01_000001/tmp -Dspark.yarn.app.container.log.dir=/var/log/yarnuser/userlogs/application_1635264473597_0181/container_1635264473597_0181_01_000001 org.apache.spark.deploy.yarn.ApplicationMaster --class org.apache.livy.rsc.driver.RSCDriverBootstrapper --properties-file /var/opt/hadoop/temp/nm-local-dir/usercache/grajee/appcache/application_1635264473597_0181/container_1635264473597_0181_01_000001/spark_conf/spark_conf.properties --dist-cache- conf /var/opt/hadoop/temp/nm-local-dir/usercache/grajee/appcache/application_1635264473597_0181/container_1635264473597_0181_01_000001/spark_conf/spark_dist_cache.properties

|- 12990 12987 12990 12990 (bash) 0 0 4304896 775 /bin/bash -c /opt/mssql/lib/zulu-jre-8/bin/java -server -XX:ActiveProcessorCount=1 -Xmx1664m -Djava.io.tmpdir=/var/opt/hadoop/temp/nm-local-dir/usercache/grajee/appcache/application_1635264473597_0181/container_1635264473597_0181_01_000001/tmp -Dspark.yarn.app.container.log.dir=/var/log/yarnuser/userlogs/application_1635264473597_0181/container_1635264473597_0181_01_000001 org.apache.spark.deploy.yarn.ApplicationMaster --class 'org.apache.livy.rsc.driver.RSCDriverBootstrapper' --properties-file /var/opt/hadoop/temp/nm-local-dir/usercache/grajee/appcache/application_1635264473597_0181/container_1635264473597_0181_01_000001/spark_conf/spark_conf.properties --dist-cache- conf /var/opt/hadoop/temp/nm-local-dir/usercache/grajee/appcache/application_1635264473597_0181/container_1635264473597_0181_01_000001/spark_conf/spark_dist_cache.properties 1> /var/log/yarnuser/userlogs/application_1635264473597_0181/container_1635264473597_0181_01_000001/stdout 2> /var/log/yarnuser/userlogs/application_1635264473597_0181/container_1635264473597_0181_01_000001/stderr

[2021-11-12 15:00:16.921]容器应要求被杀死。退出代码是 143

[2021-11-12 15:00:16.940]容器以非零退出代码退出 143.

有关更详细的输出,请查看应用程序跟踪页面: https://sparkhead-0.mssql-cluster.everestre.net:8090/cluster/app/application_1635264473597_0181 然后点击每次尝试日志的链接。

。申请失败。

默认设置如下,没有运行时设置:

“设置”: "spark-defaults-conf.spark.driver.cores": "1", "spark-defaults-conf.spark.driver.memory": "1664m", "spark-defaults-conf.spark.driver.memoryOverhead": "384", "spark-defaults-conf.spark.executor.instances": "1", "spark-defaults-conf.spark.executor.cores": "2", "spark-defaults-conf.spark.executor.memory": "3712m", "spark-defaults-conf.spark.executor.memoryOverhead": "384", "yarn-site.yarn.nodemanager.resource.memory-mb": "12288", “yarn-site.yarn.nodemanager.resource.cpu-vcores”:“6”, "yarn-site.yarn.scheduler.maximum-allocation-mb": "12288", “yarn-site.yarn.scheduler.maximum-allocation-vcores”:“6”, “yarn-site.yarn.scheduler.capacity.maximum-am-resource-percent”:“0.34”。

AM Container 是指 Application Master Container 还是 Application Manager (of YARN)。如果是这种情况,那么在 Cluster Mode 设置中,Driver 和 Application Master 在同一个 Container 中运行?

我要更改哪些运行时参数才能使 Pyspark 代码成功。

谢谢, 格拉吉

【问题讨论】:

【参考方案1】:

您可能没有更改任何设置 143 可能意味着很多事情,包括您的内存不足。测试你是否内存不足。我会减少您使用的数据量,看看您的代码是否开始工作。如果是这样,很可能您的内存不足,应该考虑重构您的代码。一般来说,我建议在更改 spark 配置之前先尝试更改代码。

为了理解 spark driver 如何在 yarn 上工作,这里有一个合理的解释:https://sujithjay.com/spark/with-yarn

【讨论】:

以上是关于带有 AM Container 限制错误的 pyspark 错误的主要内容,如果未能解决你的问题,请参考以下文章

FlinkFlink AM container is launched, waiting for AM container to Register with RM

解决 Application xxx failed 2 times due to AM Container for xxx exited with exitCode: 13 问题

错误 C2893:无法专门化函数模板 C++

Hadoop YARN参数介绍

图像蒙太奇 - 重复

PyS60-图库缩略图版本。2