Spark无限期等待“要求发送地图输出位置以进行随机播放”

时间:2014-09-01 07:41:31

标签: apache-spark yarn hadoop2

我的工作常常伴随着这样的信息:

14/09/01 00:32:18 INFO spark.MapOutputTrackerMasterActor: Asked to send map output locations for shuffle 0 to spark@*:37619

如果有人能够解释Spark在发出此消息时正在做什么,那将会很棒。这条消息是什么意思?用户可能做错了什么?应该调整哪些配置?

它很难调试,因为它没有OOM,它没有给出ST,它只是坐着坐着。

Spark至少可以追溯到1.0.0这个问题,并且仍在使用Spark 1.5.0

1 个答案:

答案 0 :(得分:0)

基于this thread,较新版本的spark在改组方面变得更好(如果仍然失败,则报告错误)。此外,还提到了以下技巧:

这很有可能是因为序列化的地图输出位置缓冲区 超过了akka的框架大小。请尝试设置“ spark.akka.frameSize” (默认10 MB)设置为更高的数字,例如64或128。

在最新版本的Spark中,这将引发更好的错误,因为 值什么。

可能的解决方法:

如果groupByKey中的密钥分布偏斜(某些 键比其他键更常出现),您应该考虑修改 您的工作尽可能使用reduceByKey。

还有侧轨:

通过为每个执行者分配一个核心,为我解决了这个问题。

也许您的执行者内存配置应按执行者核心划分