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

the*_*eek 10 hadoop-yarn apache-spark hadoop2

我的工作常常挂在这样的信息上:

14/09/01 00:32:18 INFO spark.MapOutputTrackerMasterActor: Asked to send map output locations for shuffle 0 to spark@*:37619
Run Code Online (Sandbox Code Playgroud)

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

这很难调试,因为它不是OOM,它不会给ST,它只是坐着坐着坐着.

至少早在1.0.0这就是Spark的一个问题,并且仍在使用Spark 1.5.0

Den*_*din 1

基于此线程,最新版本的 Spark 在洗牌方面变得更好(并且如果失败则报告错误)。此外,还提到了以下提示:

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

在 Spark 的最新版本中,这会引发更好的错误,无论它的价值如何。

一个可能的解决方法:

如果 groupByKey 中的键分布不均匀(某些键比其他键出现的频率更高),您应该考虑修改您的作业以尽可能使用 reduceByKey。

还有一条小路:

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

也许你的执行程序内存配置应该除以执行程序核心数