spark2.x的記憶體管理模型如下圖所示:
spark中的記憶體使用大致包括兩種型別:執行和儲存。執行記憶體是指用於用於shuffle、join、排序、聚合等計算的記憶體,而儲存記憶體是指用於在集群中持久化和廣播內部資料的記憶體。在spark中,執行記憶體和儲存記憶體共享乙個統一的區域。當沒有使用執行記憶體時,儲存記憶體可以獲取所有可用記憶體,反之亦然。如有必要,執行記憶體可以占用儲存儲存,但僅限於總儲存記憶體使用量低於某個閾值。
該設計確保了幾種理想的特性。首先,不使用快取的應用程式可以使用整個空間執行,從而避免不必要的磁碟溢位。其次,使用快取的應用程式可以保留最小儲存空間。最後,這種方法為各種工作負載提供了合理的開箱即用效能,而無需使用者內部劃分記憶體的專業知識。
spark.memory.fraction預設大小為(jvm堆記憶體 - 300mb)的一小部分(預設值為0.6)。剩下的空間(40%)保留用於使用者資料結構,spark中的內部元資料,以及在稀疏和異常大的記錄的情況下防止oom錯誤。
spark.memory.storagefraction預設大小為(jvm堆記憶體 - 300mb)*0.6*0.5。
關於spark2 x後的SparkSession
apache spark2.0 引入了sparksession,其為使用者提供了乙個統一的切入點來使用spark的各項功能,並且允許使用者通過它呼叫dataframe和dataset相關api來編寫spark程式。最重要的是,它減少了使用者需要了解的一些概念,使得我們可以很容易地與spark互動,在...
CDH5 11安裝spark2 x詳細步驟
簡介 在我的cdh5.11集群中,預設安裝的spark是1.6版本,這裡需要將其公升級為spark2.x版本。經查閱官方文件,發現spark1.6和2.x是可以並行安裝的,也就是說可以不用刪除預設的1.6版本,可以直接安裝2.x版本,它們各自用的埠也是不一樣的。我嘗試了安裝spark2.0版本和sp...
Spark中的記憶體管理 一
乙個spark應用執行的過程如下所示 executor上面執行的每個maptask結束後都會有mapstatus匯報給driver,當maptask數量非常多的時候可能會導致driver出現oom,此時需要調整driver的記憶體大小,通過 conf spark.driver.memory 4g或者...