Spark效能優化之Shuffle效能調優

2021-12-30 08:13:37 字數 718 閱讀 4326

一:shuffle效能調優

1,問題:shuffle output file lost?真正的原因是gc導致的!!!如果gc尤其是full gc產生通常會導致執行緒停止工作,這個時候下乙個stage的task在預設情況下就會嘗試重試來獲取資料,一般重試3次每次重試的時間為5s,也就是說預設情況下15s內如果還是無法抓到資料的話,就會出現shuffle output file lost等情況,進而會導致task重試,甚至會導致stage重試,最嚴重的是會導致app失敗;在這個時候首先就要採用高效的記憶體資料結構和序列化機制、jvm的調優來減少full gc的產生;

2,在shuffle的時候,reducer端獲取資料就會有乙個指定大小的快取空間,如果記憶體足夠達到情況下,可以適當的增大該快取空間,否則會spill到磁碟,影響效率。

此時可以調整(增大)spark.reducer.maxsizeinflight引數;

3,在shufflemaptask端通常也會增大map任務的寫磁碟的快取,預設情況下是32k,spark.shuffle.file.buffer;

4,調整獲取shuffle資料的重試次數,預設是3次,通常建議增大重試次數;調整獲取shuffle資料重試的時間間隔,預設是5s,強烈建議提高該時間,spark.shuffle.io.retrywait;

5,在reducer端做aggregation的時候,預設是20%的記憶體用來做aggregation,如果超出了這個大小就會溢位到磁碟上,建議調大百分比來提高效能;

spark效能優化

熟悉spark核心之後,深刻體會到了spark開發中存在著大量細節左右著計算效能。趁著剛看過大概的流程,先基於目前的感受和相關資料,總結一下可能存在優化空間的地方。spark優化其實就是將不必要的開銷能省就省。建立rdd是昂貴的,從磁碟讀取rdd也是昂貴的,需要大量的io開銷,shuffle是與基於...

spark的效能優化

因為之前在tesla集群上申請了1000個節點被噴之後,現在只敢申請100個節點,後來導致乙個嚴重的結果,自從100節點以來再也沒有跑出結果。進而意識到了spark優化的重要性,現再次總結一下 1.乙個通用的調整並行度的方式 首先要明確乙個概念,hadoop為每乙個partition建立乙個task...

spark效能優化二

一 task效能優化 1,慢任務的效能優化 可以考慮減少每個partition處理的資料量,同時建議開啟 spark.speculation,2,儘量減少shuffle,例如我們要儘量減少 groupbykey 的操作,因為 groupbykey 會要求通過網路拷貝 shuffle 所有的資料,優先...