Apache spark 用“点燃无限期的等待”;要求发送地图输出位置以进行洗牌“;
我的工作经常伴随着这样的信息:Apache spark 用“点燃无限期的等待”;要求发送地图输出位置以进行洗牌“;,apache-spark,yarn,hadoop2,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,它只是坐啊坐啊坐 这是Spa
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仍在进行中,因为Spark的最新版本在洗牌方面做得更好(如果仍然失败,则报告错误)。此外,还提到了以下提示:
这很可能是因为序列化映射输出位置缓冲区
超过akka帧大小。请尝试设置“spark.akka.frameSize”
(默认为10 MB)设置为更高的数字,如64或128
例如,在最新版本的Spark中,这将抛出一个更好的错误
它的价值
可能的解决方法:
如果groupByKey中的键分布不均匀(有些
键出现的方式比其他方式更频繁)你应该考虑修改
您的工作是尽可能使用reduceByKey
和一条侧线:
通过为每个执行者分配一个内核,我解决了这个问题
也许您的executor内存配置应该除以executor内核
也许是僵局?你能通过
jstack
粘贴线程的堆栈跟踪吗?你能复制它吗,或者它只是偶尔发生?