Spark(十三) Spark效能調優之RDD持久化
一、背景理念
- 1,RDD架構重構與優化
儘量去複用RDD,差不多的RDD,可以抽取稱為一個共同的RDD,供後面的RDD計算時,反覆使用。
- 2、公共RDD一定要實現持久化
北方吃餃子,現包現煮。你人來了,要點一盤餃子。餡料+餃子皮+水->包好的餃子,對包好的餃子去煮,煮開了以後,才有你需要的熟的,熱騰騰的餃子。
現實生活中,餃子現包現煮,當然是最好的了;但是Spark中,RDD要去“現包現煮”,那就是一場致命的災難。
對於要多次計算和使用的公共RDD,一定要進行持久化。
持久化,也就是說,將RDD的資料快取到記憶體中/磁碟中,(BlockManager),以後無論對這個RDD做多少次計算,那麼都是直接取這個RDD的持久化的資料,比如從記憶體中或者磁碟中,直接提取一份資料。
- 3、持久化,是可以進行序列化的
如果正常將資料持久化在記憶體中,那麼可能會導致記憶體的佔用過大,這樣的話,也許,會導致OOM記憶體溢位。
當純記憶體無法支撐公共RDD資料完全存放的時候,就優先考慮,使用序列化的方式在純記憶體中儲存。將RDD的每個partition的資料,序列化成一個大的位元組陣列,就一個物件;序列化後,大大減少記憶體的空間佔用。
序列化的方式,唯一的缺點就是,在獲取資料的時候,需要反序列化。
如果序列化純記憶體方式,還是導致OOM,記憶體溢位;就只能考慮磁碟的方式,記憶體+磁碟的普通方式(無序列化)。
記憶體+磁碟,序列化
- 4、為了資料的高可靠性,而且記憶體充足,可以使用雙副本機制,進行持久化
持久化的雙副本機制,持久化後的一個副本,因為機器當機了,副本丟了,就還是得重新計算一次;持久化的每個資料單元,儲存一份副本,放在其他節點上面;從而進行容錯;一個副本丟了,不用重新計算,還可以使用另外一份副本。
這種方式,僅僅針對你的記憶體資源極度充足
二、流程圖示
另外一種情況,從一個RDD到幾個不同的RDD,運算元和計算邏輯其實是完全一樣的,結果因為人為的疏忽,計算了多次,獲取到了多個RDD。
persisit
相關文章
- Spark效能優化:對RDD持久化或CheckPoint操作Spark優化持久化
- 快取Apache Spark RDD - 效能調優快取ApacheSpark
- Spark效能優化Spark優化
- Spark 效能調優--資源調優Spark
- spark效能優化(一)Spark優化
- Spark效能調優-RDD運算元調優篇(深度好文,面試常問,建議收藏)Spark面試
- Spark學習——效能調優(一)Spark
- Spark學習——效能調優(二)Spark
- Spark學習——效能調優(三)Spark
- spark-RDDSpark
- Spark RDD APISparkAPI
- spark效能調優指南高階篇Spark
- Spark 效能調優--開發階段Spark
- Spark 3.x Spark Core詳解 & 效能優化Spark優化
- Spark - [03] RDD概述Spark
- spark效能優化幾點注意Spark優化
- Spark效能調優——9項基本原則Spark
- Spark shuffle調優Spark
- Spark效能優化:優化資料結構Spark優化資料結構
- Spark效能最佳化篇三:資料傾斜調優Spark
- spark RDD,reduceByKey vs groupByKeySpark
- Spark 的核心概念 RDDSpark
- Spark RDD的預設分割槽數:(spark 2.1.0)Spark
- Spark RDD在Spark中的地位和作用如何?Spark
- spark調優-背壓Spark
- Spark RDD 特徵及其依賴Spark特徵
- spark學習筆記--RDDSpark筆記
- Spark RDD中Runtime流程解析Spark
- SparkSQL /DataFrame /Spark RDD誰快?SparkSQL
- hive、spark優化HiveSpark優化
- spark學習筆記--Spark調優與除錯Spark筆記除錯
- Spark面試題(七)——Spark程式開發調優Spark面試題
- Spark面試題(八)——Spark的Shuffle配置調優Spark面試題
- 1,Spark引數調優Spark
- spark 原始碼分析之十三 -- SerializerManager剖析Spark原始碼
- Spark效能優化:提高並行度、使用reduceByKeySpark優化並行
- Spark Streaming(六):快取與持久化Spark快取持久化
- Spark學習(二)——RDD基礎Spark