Spark性能調優2-總結分享

1、Spark調優背景

目前Zeppelin已經上線一段時間,Spark作爲底層SQL執行引擎,需要進行整體性能調優,來提高SQL查詢效率。本文主要給出調優的結論,因爲涉及參數很多,故沒有很細粒度調優,但整體調優方向是可以得出的。

環境:服務器600+,spark 2.0.2,hadoop 2.6.0

2、調優結果

調優隨機選取線上9條SQL,表橫軸是調優測試項目,測試在集羣空閒情況下進行,後一個的測試都是疊加前面測試參數。從數據可參數經過調優,理想環境下性能可提高50%到300%

#3、 下面爲調優分享PPT
####1)一圖概覽
這裏寫圖片描述

####2) Spark集羣優化——數據本地性
這裏寫圖片描述

####3)Spark集羣優化——存儲格式選擇
這裏寫圖片描述

####4)Spark參數優化——計算資源
這裏寫圖片描述

####5) Spark參數優化——並行度
這裏寫圖片描述

####6)Spark參數優化——offheap內存
這裏寫圖片描述

####7)Spark參數優化——大小表join
這裏寫圖片描述

####8)Spark參數優化——其他
這裏寫圖片描述

####9) Spark參數優化——shuffle過程
這裏寫圖片描述

####10)Spark代碼優化——RDD複用
這裏寫圖片描述

####11)Spark代碼優化——選擇合適算子
這裏寫圖片描述

####12) Spark代碼優化——shuffle算子並行度調優
這裏寫圖片描述

####13)Spark代碼優化——數據傾斜
這裏寫圖片描述

####14)Spark代碼優化——優化數據結構
這裏寫圖片描述

####15)Spark代碼優化——使用DateSet API
這裏寫圖片描述

####16)Spark代碼優化——使用DateSet API
這裏寫圖片描述

####17) 目前Spark的瓶頸——內存
這裏寫圖片描述

####18) 目前Spark的瓶頸——內存
這裏寫圖片描述

3、總結

調優參數雖名目多樣,但最終目的是提高CPU利用率,降低帶寬IO,提高緩存命中率,減少數據落盤。
不同數據量的最優參數都不相同,調優目的是讓參數適應數據的量級以最大程度利用資源,經調優發現並不是所有參數有效,有的參數的效果也不明顯,最後折中推薦如下調優參數以適應絕大多數SQL情況,個別SQL需要用戶單獨調參優化。(以下參數主要用於Spark Thriftserver,僅供參考)

參數 含義 默認值 調優值
spark.sql.shuffle.partitions 併發度 200 800
spark.executor.overhead.memory executor堆外內存 512m 1.5g
spark.executor.memory executor堆內存 1g 9g
spark.executor.cores executor擁有的core數 1 3
spark.locality.wait.process 進程內等待時間 3 3
spark.locality.wait.node 節點內等待時間 3 8
spark.locality.wait.rack 機架內等待時間 3 5
spark.rpc.askTimeout rpc超時時間 10 1000
spark.sql.autoBroadcastJoinThreshold 小表需要broadcast的大小閾值 10485760 33554432
spark.sql.hive.convertCTAS 創建表是否使用默認格式 false true
spark.sql.sources.default 默認數據源格式 parquet orc
spark.sql.files.openCostInBytes 小文件合併閾值 4194304 6291456
spark.sql.orc.filterPushdown orc格式表是否謂詞下推 false true
spark.shuffle.sort.bypassMergeThreshold shuffle read task閾值,小於該值則shuffle write過程不進行排序 200 600
spark.shuffle.io.retryWait 每次重試拉取數據的等待間隔 5 30
spark.shuffle.io.maxRetries 拉取數據重試次數 3 10

(完)
如果覺得文章有什麼可以討論的歡迎留言討論,如果覺得文章不錯,也希望多多點贊支持。

文章會同步到公衆號,關注公衆號,交流更方便:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章