Spark效能調優(二)

2021-08-02 04:53:39 字數 891 閱讀 4208

一:task效能優化

1,慢任務(資料傾斜或機器故障)的效能優化:可以考慮減少每個partition處理的資料量,同時建議開啟spark.speculation;

2,儘量減少shuffle,例如我們要減少groupbykey的操作,因為groupbykey會要求通過網路拷貝(shuffle)所有的資料,有限考慮使用reducebykey,因為會首先reduce locally;再例如在進行join操作的時候,形如(k1,v1)和(k1,v2)=> (k1,v3)此時就可以進行pipeline,但是(o1)join(o2)=>o3,此時就會產生shuffle操作;

3,repatition:增加task數量的時候可以考慮使用,從而更加充分使用計算資源;coalesce整理partition碎片;當partition分片數量由大變小要用coalesce(其中shuffle=false),而repartition是無論如何都進行shuffle;

二:資料傾斜:一般發生在shuffle

1,定義更加合理的key(或者說自定義partitioner)。

2,可以考慮使用bytebuffer來儲存block,最大的儲存資料為2g,如果超過這個大小會報異常;

三:網路效能優化

1,可以考慮shuffle的資料放在tachyon中帶來更好的資料本地性,減少網路的shuffle;

2,優先採用netty的方式進行網路通訊;

3,廣播:例如進行join操作的時候採用broadcast可以達到完全的資料本地性的情況下進行join操作;

5,最優先考慮是process_local(spark預設情況下也是這樣做的),所以你更應該考慮使用tachyon;

6,如果要訪問hbase或canssandra,務必保證資料處理傳送在資料所在的機器上;可以參考華為的astro的專案中的task本地化的實現。

Spark效能調優 之 運算元調優(二)

map 表示每乙個元素 rrd.foreache 表示每乙個元素 rrd.forpartitions 表示每個分割槽的資料組成的迭代器 在生產環境中,通常使用foreachpartition運算元來完成資料庫的寫入,通過foreachpartition運算元的特性,可以優化寫資料庫的效能。如果使用f...

spark 效能調優

核心調優引數如下 num executors executor memory executor cores driver memory spark.default.parallelizm spark.storage.memoryfraction spark.shuffle.memoryfractio...

Spark效能調優

日常工作使用spark處理業務問題中不可避免的都會碰到需要對spark的效能進行調優的情況,這裡就介紹一下對spark的效能調優。1.調節記憶體分配 因為在spark中堆記憶體被劃分為兩塊,一塊是給rdd的cache和persist操作rdd資料快取使用的,另一塊是給spark運算元函式使用的,函式...