一: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,...