1. 程式人生 > >高效能Spark作業基礎:你必須知道的調優原則及建議

高效能Spark作業基礎:你必須知道的調優原則及建議

在大資料計算領域,Spark已經成為了越來越流行、越來越受歡迎的計算平臺之一。Spark的功能涵蓋了大資料領域的離線批處理、SQL類處理、流式/實時計算、機器學習、圖計算等各種不同型別的計算操作,應用範圍與前景非常廣泛。在美團點評,已經有很多同學在各種專案中嘗試使用Spark。大多數同學(包括筆者在內),最初開始嘗試使用Spark的原因很簡單,主要就是為了讓大資料計算作業的執行速度更快、效能更高。

然而,通過Spark開發出高效能的大資料計算作業,並不是那麼簡單的。如果沒有對Spark作業進行合理的調優,Spark作業的執行速度可能會很慢,這樣就完全體現不出Spark作為一種快速大資料計算引擎的優勢來。因此,想要用好Spark,就必須對其進行合理的效能優化。

Spark的效能調優實際上是由很多部分組成的,不是調節幾個引數就可以立竿見影提升作業效能的。我們需要根據不同的業務場景以及資料情況,對Spark作業進行綜合性的分析,然後進行多個方面的調節和優化,才能獲得最佳效能。

筆者根據之前的Spark作業開發經驗以及實踐積累,總結出了一套Spark作業的效能優化方案。整套方案主要分為開發調優、資源調優、資料傾斜調優、shuffle調優幾個部分:

• 開發調優和資源調優是所有Spark作業都需要注意和遵循的一些基本原則,是高效能Spark作業的基礎;
• 資料傾斜調優,主要講解了一套完整的用來解決Spark作業資料傾斜的解決方案;
• shuffle調優,面向的是對Spark的原理有較深層次掌握和研究的同學,主要講解了如何對Spark作業的shuffle執行過程以及細節進行調優。

本文主要講解開發調優和資源調優。