spark記憶體概述

2022-02-04 07:33:05 字數 1132 閱讀 6609

spark程序是以jvm程序執行的,可以通過-xmx和-xms配置堆疊大小,它是如何使用堆疊呢?下面是spark記憶體分配圖。

spark預設jvm堆為512mb,為了避免oom錯誤,只使用90%。通過spark.storage.safetyfraction來設定。spark通過記憶體來儲存需要處理的資料,使用安全空間的60%,通過 spark.storage.memoryfraction來控制。如果我們想知道spark快取資料可以使用多少空間?假設執行任務需要executors數為n,那麼可使用空間為n*90%*60%*512mb,但實際快取資料的空間還要減去unroll memory。

shuffle memory的記憶體為「heap size」 * spark.shuffle.safetyfraction * spark.shuffle.memoryfraction。預設spark.shuffle.safetyfraction 是 0.8 ,spark.shuffle.memoryfraction是0.2 ,因此shuffle memory為 0.8*0.2*512mb = 0.16*512mb,shuffle memory為shuffle用作資料的排序等。

unroll memory的記憶體為spark.storage.unrollfraction * spark.storage.memoryfraction * spark.storage.safetyfraction,即0.2 * 0.6 * 0.9 * 512mb = 0.108 * 512mb。unroll memory用作資料序列化和反序列化。

提出了乙個新的記憶體管理模型: unified memory management。打破executionmemory 和 storagememory 這種分明的界限。如果現在沒有execution的需要,那麼所有的記憶體都可以給storage用,反過來也是一樣的。同時execution可以evict storage的部分記憶體,但是反過來不行。在新的記憶體管理框架上使用兩個引數來控制spark.memory.fraction和spark.memory.storagefraction。

spark 框架

spark 1.6 記憶體管理模型( unified memory management)分析

Spark 記憶體管理概述

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

Spark 概述 安裝

spark core 實現了 spark 的基本功能,包含任務排程 記憶體管理 錯誤恢復 與儲存 系統互動等模組。spark core 中還包含了對彈性分布式資料集 resilient distributed dataset,簡稱 rdd 的 api 定義。spark sql 是 spark 用來操...

Spark執行流程概述

cluster manager 在hadoop yarn上主要是指resourcemanager stage 每個job會被劃分為很多組task,作為乙個taskset,名為stage.stage的劃分和排程由dagscheduler負責。stage有非最終的stage shuffle map st...