[英]Spark Driver Memory calculation
我知道如何計算執行程序核心和內存。但是誰能解釋在什么基礎上計算spark.driver.memory?
Spark驅動程序內存是用於驅動程序進程(即運行應用程序的main()函數並在其中初始化SparkContext的進程)使用的內存量,其格式與帶有大小單位后綴(“ k”的JVM內存字符串)的格式相同。 ,“ m”,“ g”或“ t”)(例如512m,2g)。
JVM內存分為單獨的部分。 從廣義上講,JVM堆內存在物理上分為兩個部分-Young Generation和Old Generation 。
年輕一代是創建所有新對象的地方。 當年輕一代被填滿時,執行垃圾收集。 此垃圾回收稱為次要GC。
上一代內存包含經過多次次要次要GC壽命長且可以存活的對象。 通常,當垃圾回收已滿時,將在舊代內存中執行垃圾回收。 舊世代垃圾回收稱為專業GC,通常需要更長的時間。
Java Garbage Collection是從內存中識別和刪除未使用的對象的過程,以及分配給將來處理中創建的對象的可用空間的過程。 Java編程語言的最佳功能之一是自動垃圾收集,這與其他編程語言(例如C)不同,后者的內存分配和釋放是手動過程。
垃圾收集器是在后台運行的程序,它可以查看內存中的所有對象,並找出程序中任何部分未引用的對象。 刪除所有這些未引用的對象,並回收空間以分配給其他對象。
資料來源:
在操作Dataset
S,從而為collect
take
需要的所有數據移動到應用程序的驅動程序,並在一個非常大的數據集這樣做可能會崩潰用的OutOfMemoryError驅動程序。
當您收集大量驅動程序時,會增加spark.driver.memory
。
按照
Holden Karau和Rachel Warren的高性能Spark(O'Reilly)
Spark查詢的大多數計算工作都是由執行程序執行的,因此增加驅動程序的大小很少會加快計算速度。 但是,如果作業向驅動程序收集了太多數據或執行大量本地計算,則作業可能會失敗。 因此,增加驅動程序內存並相應增加
spark.driver.maxResultSize
的值可以防止驅動程序中的內存spark.driver.maxResultSize
錯誤。設置Spark驅動程序內存的一個很好的啟發方法就是盡可能地減小值,而不會導致驅動程序中出現內存錯誤,即,將最大的資源提供給執行者。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.