spark.shuffle.file.buffer預設32k
shuffle write task端的緩衝區,到達閾值後,溢寫到磁碟。將數值調大,減少io操作,提公升整體效能(具體數值根據實際情況設定)
spark.reducer.maxsizeinflight預設48m
reduce shuffle task端每次拉取的資料大小。將數值調大,降低io帶來的效能影響
spark.shuffle.io.maxretyies預設3次
shuffle read task訪問shuffle write task的重試次數,如果超過該次數,read端的task就會被kill掉。調大該數值,提高重試次數,防止write端在進行full gc或其他操作read被kill影響整個程式的正常執行
spark.shuffle.io.retrywait預設5s
shuffle read task訪問shuffle write task的等待時間,將數值調大,效果同上
spark.shuffle.memoryfraction預設0.2
分配給shuffle read task的聚合記憶體,可將數值調小,提高shuffle的執行空間
spark.shuffle.manager預設sort
spark排序方式有3種,hash,sort,tungsten-sort(可以使用堆外記憶體)
如果資料不需要排序,設定成hashshufflemanager,效率更高
spark.shuffle.sort.bypassmergethreshold預設200
當shuffle read task小於等於這個數量時,啟用bypass機制,不會進行排序,而是按照未經優化的hashshufflemanager方式寫資料,最後每個task所產生的所有臨時檔案合併成乙個大檔案,並建立乙個單獨的索引檔案
如果處理資料不需要sortshufflemanager,將該數值調大,大於shuffle read task的數量,減少排序帶來的效能開銷,但該方式會產生大量的磁碟檔案,shuffle write效能有待提高
spark.shuffle.consolidatefiles預設false
如果設定為true,就會開啟consolidate機制,會大幅合併shuffle write的檔案,對於shuffle read來說減少io操作,提公升效能
如果不需要sortshufflemanager,除了使用bypass機制,還可以將spark.shuffle.manager手動設定成hash,使用hashshufflemanager,同時開啟consolidate機制,比單獨使用bypass機制效率機制高出10%~30%
Spark之Shuffle機制和原理
shuffle就是對資料進行重組,由於分布式計算的特性和要求,在實現細節上更加繁瑣和複雜 在mapreduce框架,shuffle是連線map和reduce之間的橋梁,map階段通過shuffle讀取資料並輸出到對應的reduce 而reduce階段負責從map端拉取資料並進行計算。在整個shuff...
Spark 之 shuffle 相關的運算元
目錄 1 repartition 類 repartition類的操作 比如repartition repartitionandsortwithinpartitions coalesce等。重分割槽 一般會shuffle,因為需要在整個集群中,對之前所有的分割槽的資料進行隨機 均勻地打亂,然後把資料放...
Spark效能優化之Shuffle效能調優
一 shuffle效能調優 1,問題 shuffle output file lost?真正的原因是gc導致的!如果gc尤其是full gc產生通常會導致執行緒停止工作,這個時候下乙個stage的task在預設情況下就會嘗試重試來獲取資料,一般重試3次每次重試的時間為5s,也就是說預設情況下15s內...