gpt4 book ai didi

java - 在 Spark 中运行大连接时,执行程序运行超出内存限制

转载 作者:行者123 更新时间:2023-11-30 03:29:02 24 4
gpt4 key购买 nike

我在 Spark 上的大连接驱动程序中收到以下错误。

我们有 3 个节点,内存为 32GB,连接的总输入大小为 150GB。 (同一个应用程序在输入文件大小为50GB时正常运行)

我已将 storage.memoryFraction 设置为 0.2,将 shuffle.memoryFraction 设置为 0.2。但仍然继续出现运行超出物理极限的错误。

15/04/07 19:58:17 INFO yarn.YarnAllocator: Container marked as failed: container_1426882329798_0674_01_000002. Exit status: 143. Diagnostics: Container [pid=51382,containerID=container_1426882329798_0674_01_000002] is running beyond physical memory limits. Current usage: 16.1 GB of 16 GB physical memory used; 16.8 GB of 33.6 GB virtual memory used. Killing container. Dump of the process-tree for container_1426882329798_0674_01_000002 : |- PID PPID PGRPID SESSID CMD_NAME USER_MODE_TIME(MILLIS) SYSTEM_TIME(MILLIS) VMEM_USAGE(BYTES) RSSMEM_USAGE(PAGES) FULL_CMD_LINE |- 51387 51382 51382 51382 (java) 717795 50780 17970946048 4221191 /usr/jdk64/jdk1.7.0_45/bin/java -server -XX:OnOutOfMemoryError=kill %p -Xms14336m -Xmx14336m -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+StartAttachListener -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dlog4j.configuration=file:/softwares/log4j.properties -Djava.io.tmpdir=/hadoop/yarn/local/usercache/hdfs/appcache/application_1426882329798_0674/container_1426882329798_0674_01_000002/tmp -Dspark.driver.port=20763 -Dspark.ui.port=0 -Dspark.yarn.app.container.log.dir=/hadoop/yarn/log/application_1426882329798_0674/container_1426882329798_0674_01_000002 org.apache.spark.executor.CoarseGrainedExecutorBackend --driver-url akka.tcp://sparkDriver@maxiq2.augmentiq.in:20763/user/CoarseGrainedScheduler --executor-id 1 --hostname maxiq1.augmentiq.in --cores 4 --app-id application_1426882329798_0674 --user-class-path file:/hadoop/yarn/local/usercache/hdfs/appcache/application_1426882329798_0674/container_1426882329798_0674_01_000002/app.jar

请帮我解决这个问题吗?

最佳答案

我们之前也遇到过类似的问题。尝试更改 Spark 的所有配置,但没有成功。

后来发现是数据的问题。我们在连接中使用的键有多行。两个表中的一些键大约有 4000-5000 行。因此,spark 为该键创建了大约 5k * 5k 记录,从而使该执行器运行内存。

您可能想检查一次您的数据。对输入数据运行一些分析,例如按键分组并获取计数。这可能会给您一些见解。

关于java - 在 Spark 中运行大连接时,执行程序运行超出内存限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29494411/

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