spark調優-第一天
阿新 • • 發佈:2018-11-25
廣大的部落格友們,你們好,在這個剛過完冬至的第一個週末,下班了坐在電腦前對著電腦想了想最近做的專案,spark實時統計分析,真的非常累,做專案的時候不是你把程式碼寫完了就可以了,還要做優化的,讓程式跑的更快,更流暢,本人在公司也負責了小段時間的spark調優,之前做的hadoop調優,自己感覺spark調優跟hadoop差不多,都是從一些層面分析的,設定一些屬性值等等。好啦,不多說了,開始進入正題,這篇部落格是我集合專案中正在用到跟用到的跟大家介紹下,其中有的部分也是在網上查的資料,當然這麼多調優不可能全部用到,今天先給大家做一個大體的調優方案,可以從以下方面入手。更詳細的下篇部落格,
- 效能調優:
- 分配更多資源
- 調節並行度
- RDD持久化
- 廣播變數
- JVM調優
- 降低cache操作的記憶體佔比
- 調節executor堆外記憶體與連線等待時長
- Shuffle調優
- 合併map端輸出檔案
- 調節map端記憶體緩衝(32KB)跟reduce端記憶體佔比(0.2)
- 合理使用hashShuffleManager,sortShuffleManger,tungsten-sort
- 運算元調優
- MapPartitions提升Map類操作效能
- filter過後使用coalesce減少分割槽數量
- 使用foreachPartition優化寫資料庫效能
- 使用repartition解決Spark SQL低並行度的效能問題
- reduceByKey本地聚合介紹
- troubleshooting(故障排除)
- 控制shuffle reduce端緩衝大小以避免OOM
- 解決JVM GC導致的shuffle檔案拉取失敗
- YARN佇列資源不足導致的application直接失敗
- 解決各種序列化導致的報錯
- 解決運算元函式返回NULL導致的問題
- 解決yarn-client模式導致的網絡卡流量激增問題
- 解決yarn-cluster模式的JVM棧記憶體溢位問題
- 錯誤的持久化方式以及checkpoint的使用
- 資料傾斜解決方案
- 聚合源資料以及過濾導致傾斜的key
- 提高shuffle操作reduce並行度
- 提升shuffle reduce端並行度的操作方法
- 使用隨機key實現雙重聚合
- 將reduce join轉換為map join
- ample取樣傾斜key單獨進行join使用隨機數以及擴容表進行join