我的工作常常伴随着这样的信息:
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
答案 0 :(得分:0)
基于this thread,较新版本的spark在改组方面变得更好(如果仍然失败,则报告错误)。此外,还提到了以下技巧:
这很有可能是因为序列化的地图输出位置缓冲区 超过了akka的框架大小。请尝试设置“ spark.akka.frameSize” (默认10 MB)设置为更高的数字,例如64或128。
在最新版本的Spark中,这将引发更好的错误,因为 值什么。
可能的解决方法:
如果groupByKey中的密钥分布偏斜(某些 键比其他键更常出现),您应该考虑修改 您的工作尽可能使用reduceByKey。
还有侧轨:
通过为每个执行者分配一个核心,为我解决了这个问题。
也许您的执行者内存配置应按执行者核心划分