spark效能調優總結

2021-10-03 20:43:46 字數 1157 閱讀 1123

1 序列化優化

使用高效能的序列化框架 kryo框架 大部分已經註冊 如果沒有註冊 而是自定義的類 

sparkconf conf = new sparkconf().set("spark.serializer","org.apach.spark.serializer.kryoserializer")

那麼要註冊 

2  資料結構優化

使用int代替uuid 使用陣列等代替集合類 使用string組合代替集合類 減少包裝類的使用,減少指標

使用json代替巢狀物件

3 儲存

可以用cache() 儲存到記憶體中或者通過checkpoint()儲存到硬碟中

4 序列化持久化級別

物件儲存到記憶體中可能會出現oom 也可以將整個物件做序列化儲存到硬碟

5 jvm優化

儲存:executor佔百分之60    執行:task可以使用百分之40 可以調整比例 提公升記憶體避免oom

調整·eden 和 survive區和大小和比例

6 設定並行度

設定為core的數量的2-3倍 

new sparkconf().set("spark.default.parallelism",x)

7 廣播變數

所有檔案一位元組不差的要傳送到所有節點,那麼可以是用廣播變數這樣task和副本一對一可以變成executor和副本一對一 減少網路傳輸成本

8 資料本地化

9 運算元

盡量不用groupbykey 而是用reducebykey 因為reducebykey會先在driver上預聚合,減少網路傳輸資料量

10 shuffle 調優

設定consolidation 減少shuffle產生的檔案數量

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運算元函式使用的,函式...

Spark效能調優 JVM調優

通過一張圖讓你明白以下四個問題 1.jvm gc機制,堆記憶體的組成 2.spark的調優為什麼會和jvm的調優會有關聯?因為scala也是基於jvm執行的語言 3.spark中oom產生的原因 4.如何在jvm這個層面上來對spark進行調優 補充 spark程式執行時 jvm堆記憶體分配比例 r...