說說Spark應用程式的效能調優(分散式計算引擎)
Spark是基於記憶體的分散式計算引擎,以處理的高效和穩定著稱。然而在實際的應用開發過程中,開發者還是會遇到種種問題,其中一大類就是和效能相關。
分散式計算引擎在調優方面有四個主要關注方向,分別是CPU、記憶體、網路開銷和I/O,其具體調優目標如下:
- 提高CPU利用率。
- 避免OOM。
- 降低網路開銷。
- 減少I/O操作。
>Spark的Shuffle過程非常消耗資源,Shuffle過程意味著在相應的計算節點,要先將計算結果儲存到磁碟,後續的Stage需要將上一個Stage的結果再次讀入。資料的寫入和讀取意味著Disk I/O操作,與記憶體操作相比,Disk I/O操作是非常低效的。
使用iostat來檢視disk i/o的使用情況,disk i/o操作頻繁一般會伴隨著cpu load很高。
如果資料和計算節點都在同一臺機器上,那麼可以避免網路開銷,否則還要加上相應的網路開銷。 使用iftop來檢視網路頻寬使用情況,看哪幾個節點之間有大量的網路傳輸。
為了提高Spark應用程式的效率,儘可能的提升CPU的利用率。併發數應該是可用CPU物理核數的兩倍。在這裡,併發數過低,CPU得不到充分的利用,併發數過大,由於spark是每一個task都要分發到計算結點,所以任務啟動的開銷會上升。
併發數的修改,通過配置引數來改變spark.default.parallelism,如果是sql的話,可能通過修改spark.sql.shuffle.partitions來修改。
/repartition和coalesce都能實現資料分割槽的動態調整,但需要注意的是repartition會導致shuffle操作,而coalesce不會。
/groupBy操作應該儘可能的避免,第一是有可能造成大量的網路開銷,第二是可能導致OOM。
/在Join過程中,經常會遇到大表和小表的join. 為了提高效率可以使用BroadcastHashJoin, 預先將小表的內容廣播到各個Executor, 這樣將避免針對小表的Shuffle過程,從而極大的提高執行效率。
/移動計算的開銷遠遠低於移動資料的開銷。
/使用好的序列化演算法能夠提高執行速度,同時能夠減少記憶體的使用。
Spark在Shuffle的時候要將資料先儲存到磁碟中,儲存的內容是經過序列化的。序列化的過程牽涉到兩大基本考慮的因素,一是序列化的速度,二是序列化後內容所佔用的大小.
相關文章
- Spark的效能調優Spark
- Spark效能調優Spark
- Spark 效能調優--資源調優Spark
- Spark 效能調優--Shuffle調優 SortShuffleManagerSpark
- Spark應用程式開發引數調優深入剖析-Spark商業調優實戰Spark
- Spark:一個高效的分散式計算系統Spark分散式
- 再說分散式鎖分散式
- Spark學習——效能調優(一)Spark
- Spark學習——效能調優(二)Spark
- Spark學習——效能調優(三)Spark
- 【譯】React 應用效能調優React
- Spark(十三) Spark效能調優之RDD持久化Spark持久化
- 說說實時流式計算
- 說說tableViewCell行高計算View
- Linux效能調優從最佳化思路說起Linux
- Spark效能調優-RDD運算元調優篇(深度好文,面試常問,建議收藏)Spark面試
- 細說Redis分散式鎖?Redis分散式
- 分散式計算技術(上):經典計算框架MapReduce、Spark 解析分散式框架Spark
- spark效能調優指南高階篇Spark
- Spark 效能調優--開發階段Spark
- 快取Apache Spark RDD - 效能調優快取ApacheSpark
- 實時計算Flink效能調優
- 聊聊分散式事務,再說說解決方案分散式
- 高效能 Java 計算服務的效能調優實戰Java
- 說說阿里增量計算框架Galaxy阿里框架
- hadoop之 Zookeeper 分散式應用程式協調服務Hadoop分散式
- 說說 PHP 的魔術方法及其應用PHP
- 說說對WebSocket的理解?應用場景?Web
- Spark效能調優——9項基本原則Spark
- 格物致知—機器學習應用效能調優機器學習
- 分散式協調服務ZooKeeper的典型應用分散式
- 一些可以預見的Oracle應用程式效能調優 (2)Oracle
- 一些可以預見的Oracle應用程式效能調優 (1)Oracle
- 【雲端計算】雲端計算六大優點簡單說明
- Spark面試題(七)——Spark程式開發調優Spark面試題
- 軟體效能測試分析與調優實踐之路-Java應用程式的效能分析與調優-手稿節選Java
- 說說 vue-router 元件的高階應用Vue元件
- 【Spark篇】---Spark調優之程式碼調優,資料本地化調優,記憶體調優,SparkShuffle調優,Executor的堆外記憶體調優Spark記憶體