spark效能優化二

2021-07-26 07:38:22 字數 1189 閱讀 8272

一:task效能優化

1, 慢任務的效能優化:可以考慮減少每個partition處理的資料量,同時建議開啟

spark.speculation,

2, 儘量減少shuffle,例如我們要儘量減少

groupbykey

的操作,因為

groupbykey

會要求通過網路拷貝(

shuffle

)所有的資料,優先考慮使用

reducebykey

,因為reducebykey

會首先reduce locally

;再例如在進行

join

操作的時候,形如(k1,

v1)

join(k1

,v2)=>(k1

,v3)

此時就可以進行

pipeline

,但是(o1)

join (o2) => (o3)

,此時就會產生

shuffle

操作;

3, repartition:增加

task

數量的時候可以考慮使用,從而更加充分是使用計算資源;

coalesce:

整理partition

碎片;

二:資料傾斜

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

partitioner);

2, 可以考慮使用bytebuffer來儲存

block

,最大的儲存資料為

2g,如果超過這個大小會報異常;

三:網路

1, 可以考慮shuffle的資料放在

tachyon

中帶來更好的資料本地性,減少網路的

shuffle;

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

3, 廣播:例如進行join操作的時候採用

broadcast

可以達到完全的資料本地性的情況下進行

join

操作;

partition

(一次!!!);

5, 最優先考慮是process_local(spark預設情況下也是這樣做的

),所以你更應該考慮使用

tachyon;

6, 如果要訪問hbase或者

canssandra

,務必保證資料處理傳送在資料所在的機器上;

spark效能優化

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

spark的效能優化

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

spark效能優化八

一 使用tungsten功能 1,如果想讓您的程式使用tungsten的功能,可以配置 spark.shuffle.manager tungsten sort 2,dataframe中自動開啟了 tungsten 功能 二 tungsten sort base shuffle writer內幕 1,...