我得到了以下的错误,在一个大连接的火花驱动器。
我们有3个节点,32 We的ram和总输入大小的连接是150 We。(当输入文件大小为50 is时,同一应用程序运行正常)
我已经将storage.memoryFraction设置为0.2,shuffle.memoryFraction设置为0.2。但仍在不断地获得超越物理极限的误差。
15/04/07 19:58:17信息yarn.YarnAllocator:容器标记为失败: container_1426882329798_0674_01_000002。出口情况: 143。诊断:容器containerID=container_1426882329798_0674_01_000002的运行超出了物理内存的限制。当前使用:使用16.1 GB的16 GB物理内存;使用16.8GB的33.6 GB虚拟内存。杀人容器。container_1426882329798_0674_01_000002进程树的转储:p/jdk64 64/jdk64 1.7.0_45/bin/java -server -XX:OnOutOfMemoryError=kill %p -Xms14336m -Xmx14336m -verbose:gc -XX:+PrintGCDetails - 51387 51382 51382 51382 (java) 717795 50780 17970946048 4221191 /usr/jdk64 64/jdk64 1.7.0_45/bin/java-server-XX:OnOutOfMemoryError=kill%p-Xms14336m-Xmx14336m-verbose:gc-XX:+PrintGCDetails--Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -XX:+StartAttachListener -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.ssl=false -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 --驱动程序-url akka.tcp://sparkDriver@maxiq2.augmentiq.in:20763/user/CoarseGrainedScheduler -执行器-id 1-主机名maxiq1.augmentiq.in -核心4-app-id application_1426882329798_0674 -用户类-路径file:/hadoop/yarn/local/usercache/hdfs/appcache/application_1426882329798_0674/container_1426882329798_0674_01_000002/app.jar
请帮我解决这个问题?
发布于 2016-02-17 14:06:10
我们以前也遇到过类似的问题。试图改变所有的配置火花,但没有运气。
后来,我们发现这是数据的问题所在。我们在联接中使用的键有多个行。其中一些键在两个表中都有大约4000至5000行。所以spark为这个键创建了大约5k * 5k的记录,使执行器运行内存。
您可能需要检查一次数据。对输入数据运行一些分析,如Group键并获取计数。这可能会给你一些见解。
发布于 2016-02-16 01:28:43
您可以尝试将--executor-memory设置为低于此限制的内容。限制是在yarn-site.xml中定义的,或者如果没有设置,则默认为好默认设置。
如果节点有更多内存,也可以尝试增加限制。详细说明一些大小调整说明可以在http://blog.cloudera.com/blog/2015/03/how-to-tune-your-apache-spark-jobs-part-2/中找到。
一般来说,请记住您的资源分配是由纱线控制的,熟悉纱线的工作和调试是一个神的想法。
https://stackoverflow.com/questions/29494411
复制相似问题