當前位置:編程學習大全網 - 網站源碼 - Spark異常處理——Shuffle FetchFailedException

Spark異常處理——Shuffle FetchFailedException

在大規模數據處理中,這個錯誤比較常見。壹般發生在有大量shuffle操作的時候,task不斷的failed,然後又重執行,壹直循環下去,直到application失敗。

SparkSQL shuffle報錯樣例

RDD shuffle報錯樣例

shuffle 分為 shuffle write 和 shuffle read 兩部分:

解決辦法主要從 shuffle的數據量 處理shuffle數據的分區數 兩個角度入手。

通過 spark.sql.shuffle.partitions 控制分區數,默認為200,根據shuffle的量以及計算的復雜度提高這個值。

通過 spark.default.parallelism 控制 shuffle read 與 reduce 處理的分區數,默認為運行任務的core的總數(mesos細粒度模式為8個,local模式為本地的core總數),官方建議設置成運行任務的core的2-3倍。

通過 spark.executor.memory 適當提高executor的內存

通過 spark.executor.cores 增加每個executor的cpu,這樣不會減少task並行度

  • 上一篇:建昌營距離玉田多遠
  • 下一篇:逐行讀取源代碼並逐行運行,這叫做執行。
  • copyright 2024編程學習大全網