2015-12-14 50 views
5

我跑的火花流媒体应用纱集装箱,它运作良好,几天之后,我遇到了一个问题,从下面的纱线列表中的错误消息:星火流纱线 - 运行超出了物理内存限制

Application application_1449727361299_0049 failed 2 times due to AM Container for appattempt_1449727361299_0049_000002 exited with exitCode: -104 
For more detailed output, check application tracking page:https://sccsparkdev03:26001/cluster/app/application_1449727361299_0049Then, click on links to logs of each attempt. 
Diagnostics: Container [pid=25317,containerID=container_1449727361299_0049_02_000001] is running beyond physical memory limits. Current usage: 3.5 GB of 3.5 GB physical memory used; 5.3 GB of 8.8 GB virtual memory used. Killing container. 

这里是我的内存配置:

spark.driver.memory = 3g 
spark.executor.memory = 3g 
mapred.child.java.opts -Xms1024M -Xmx3584M 
mapreduce.map.java.opts -Xmx2048M 
mapreduce.map.memory.mb 4096 
mapreduce.reduce.java.opts -Xmx3276M 
mapreduce.reduce.memory.mb 4096 

这OOM错误很奇怪,因为我没有保留在内存中的任何数据,因为它是一个流节目,有没有人遇到过像它一样的问题吗?或谁知道是什么原因造成的?

+0

你得到任何这分辨率的详细比例? –

回答

-1

检查您正在运行它的box/vm实例上的mem。我的猜测是主机是红色的衬里。

...由于它看起来是过度分配内存。

您认为流式传输在哪里执行?不管你在那里存储什么东西?对。记忆。不是猫或跳舞海盗(添加“e”)。

猜猜是什么?您正在分配7 GB的内存,这对虚拟内存而言非常重要。

  1. 检查您的日志记录,因为这将有类似的建立时间。

  2. 什么是spark.yarn.am.memory值?

  3. 让你的虚拟机和容器内存分配平衡:)

另一种认为是调整memoryOverhead从而物理&虚拟可以