工作失敗引發洗牌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。啟用了錯誤

更新後重新啟動集群火花配置

刪除

信息

有一個輕微的性能影響當洗牌服務是禁用的。


這篇文章有用嗎?