簡體   English   中英

Spark驅動程序內存計算

[英]Spark Driver Memory calculation

我知道如何計算執行程序核心和內存。但是誰能解釋在什么基礎上計算spark.driver.memory?

Spark驅動程序內存是用於驅動程序進程(即運行應用程序的main()函數並在其中初始化SparkContext的進程)使用的內存量,其格式與帶有大小單位后綴(“ k”的JVM內存字符串)的格式相同。 ,“ m”,“ g”或“ t”)(例如512m,2g)。

JVM內存分為單獨的部分。 從廣義上講,JVM堆內存在物理上分為兩個部分-Young GenerationOld Generation

年輕一代是創建所有新對象的地方。 當年輕一代被填滿時,執行垃圾收集。 此垃圾回收稱為次要GC。

上一代內存包含經過多次次要次要GC壽命長且可以存活的對象。 通常,當垃圾回收已滿時,將在舊代內存中執行垃圾回收。 舊世代垃圾回收稱為專業GC,通常需要更長的時間。

Java Garbage Collection是從內存中識別和刪除未使用的對象的過程,以及分配給將來處理中創建的對象的可用空間的過程。 Java編程語言的最佳功能之一是自動垃圾收集,這與其他編程語言(例如C)不同,后者的內存分配和釋放是手動過程。

垃圾收集器是在后台運行的程序,它可以查看內存中的所有對象,並找出程序中任何部分未引用的對象。 刪除所有這些未引用的對象,並回收空間以分配給其他對象。

資料來源:

https://spark.apache.org/docs/latest/configuration.html

https://www.journaldev.com/2856/java-jvm-memory-model-memory-management-in-java#java-memory-model-8211-permanent-generation

在操作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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM