Spark記憶體管理

2022-07-25 12:15:12 字數 580 閱讀 1920

spark記憶體管理不是通過物理或者硬體底層api實現對記憶體資源探測,只是通過對記憶體操作過程期間的位元組量的變化不斷更新維護的數字,通過該方式跟蹤記憶體使用情況。spark對每個task都關聯了記憶體的使用量,存放在了map中。嚴格意義上講,spark記憶體的管理是估算量,不是精確量。spark的記憶體管理主要針對的堆內記憶體,和離堆非堆無關。

spark記憶體是指jvm的堆記憶體,也稱為系統記憶體。系統記憶體必須是保留記憶體的1.5倍以上。由於保留記憶體預設是300m,因此spark系統記憶體必須是450m空間以上。

2.1 系統記憶體設定

啟動命令設定

$>spark-submit --executor-memory 500m

屬性配置設定

conf.set("spark.executor.memory" , 500 * 1024 * 1024 + "")

2.2 系統記憶體結構

系統記憶體分為如下幾個部分:

spark的記憶體有staticmemorymanager(靜態記憶體管理)和unifiedmemorymanager(統一記憶體管理)。

Spark記憶體管理

spark記憶體用途 rdd儲存 當呼叫rdd 的persist 或cache 方法時,這個rdd 的分割槽會被儲存到快取區中。spark 會根據spark.storage.memoryfraction 限制用來快取的記憶體佔整個jvm 堆空間的 比例大小。如果超出限制,舊的分割槽資料會被移出記憶體...

Spark記憶體管理

spark的一大特性就是基於記憶體計算,driver只儲存任務的巨集觀性的元資料,資料量較小,且在執行過程中基本不變,不做重點分析,而真正的計算任務task分布在各個executor中,其中的記憶體資料量大,且會隨著計算的進行會發生實時變化,所以executor的記憶體管理才分析的重點。在執行spa...

Spark 記憶體管理概述

spark被稱作記憶體計算引擎,使得很多初學者認為spark執行環境一定需要大量記憶體,更有甚者,認為spark執行期會把原始資料一次性全部載入到記憶體。解開這些疑團,需要了解spark執行時的機制,spark的計算發生在executor,因此,這裡的執行時機制是指executor的行為。對於spa...