工作失败引发洗牌FetchFailedException错误

禁用默认的火花洗牌服务解决FetchFailedException错误。

写的shanmugavel.chandrakasu

去年发表在:2022年12月5日

问题

如果您的应用程序包含任何聚合或加入阶段,执行需要一个火花洗牌阶段。取决于所使用的特定的配置,如果你是一个交互式的集群上运行多个流查询你可能得到一个洗牌FetchFailedException错误。

ShuffleMapStage未能最大允许的次数DAGScheduler: ShuffleMapStage 499453(从command-39573728:13)失败由于org.apache.spark.shuffle 468.820秒。MetadataFetchFailedException:缺少一个输出位置228703 org.apache.spark.shuffle洗牌。FetchFailedException: Connection reset by peer at org.apache.spark.storage.ShuffleBlockFetcherIterator.throwFetchFailedException(ShuffleBlockFetcherIterator.scala:747) Caused by: java.io.IOException: Connection reset by peer

导致

洗牌获取失败通常发生在场景如集群降尺度事件,遗嘱执行人损失,或工人解除。在某些情况下,从遗嘱执行人洗牌文件丢失。当一个后续任务试图获取洗牌文件,它失败了。

砖的洗牌服务是默认启用。这项服务允许外部转移服务,保留了洗牌文件写的执行人执行人可以安全地删除。

运行spark.conf.get (“spark.shuffle.service.enabled”)在Python或Scala笔记本电池返回洗牌服务的当前值。如果它返回真正的启用该服务。

spark.conf.get (“spark.shuffle.service.enabled”)

解决方案

禁用默认的火花洗牌服务。

禁用服务并不妨碍洗牌,洗牌只是更改执行的方法。当服务被禁用,洗牌是由执行人执行的。

你可以通过添加禁用洗牌服务spark.shuffle.service。启用了错误集群的火花配置(AWS|Azure|GCP)。

spark.shuffle.service。启用了错误

更新后重新启动集群火花配置

删除

信息

有一个轻微的性能影响当洗牌服务是禁用的。


这篇文章有用吗?