spark之shuffle引數優化

2021-09-19 05:12:05 字數 1413 閱讀 9249

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內...