Spark - MapOutputTrackerMasterEndpoint:Map输出状态是N个字节,超过了akka framesize

时间:2016-12-08 18:55:44

标签: apache-spark

我正在使用Spark 1.6。这是代码:

MapOutputTrackerMasterEndpoint: Map output statuses were 294710029 bytes which exceeds spark.akka.frameSize

我收到以下异常 -

idRecs.take(300)

当我的输入大小很大时(约4TB,约50亿条记录),会发生这种情况。我用大约1TB尝试了相同的代码,并没有面对这个问题。你可以看到我没有向驱动程序发送任何数据,除了<th><a href="#cell1">00 am</a> </th> <th id="cell1">4 pm</th> #cell1:target { color: red; } - 每个idRec大小大约是400字节。

不胜感激。

1 个答案:

答案 0 :(得分:1)

所以,我遇到了同样的问题并决定进行调查。事实证明,虽然不明显,(可能很大)数据 确实以MapOutputStatuses的形式在驱动程序和工作人员之间来回传递(据我所知) ,本质上是数据在工人身上的位置图。此地图的大小无限制(根据this Jira票证),并且随着任务数量的增加而增长。处理大量数据通常需要大量任务,这就是输入大小增加时遇到问题的原因。

解决方案确实是增加驱动程序的mem大小,并增加akka.framesize以适应更大的地图。

请注意,根据this Jira票证,问题已在Spark 2.0中得到解决。