Spark記憶體設定

2021-08-20 20:03:43 字數 991 閱讀 9749

1.常規設定

在我另一篇文章中也有提到(spark執行常見問題),即常規設定:

(假設物理機記憶體大小為32g)

-xms    物理記憶體的1/64    -xms512m

-xmx    物理記憶體的1/4    -xmx8g        

-xx:permsize    物理記憶體的1/64    -xx:permsize=512m

-xx:maxpermsize    物理記憶體的1/4 -xx:maxpermsize=8g

2.出現記憶體溢位時

1)首先調整eclipse或者idea配置檔案內的記憶體大小。

2)其次調整jvm記憶體大小設定,jvm記憶體大小設定應同配置檔案設定。

3)分頁記憶體設定(一般不需要)

3.判斷和設定

執行spark時會顯示日誌訊息,如下:

18/06/19 12:00:00 info memorystore: memorystore started with capacity 4.1 gb

判斷方法就是根據spark產生的日誌資訊:spark可用記憶體即為4.1g,這個引數的設定僅與-xmx大小有關,大體即為-xmx值乘以預設引數0.6來推算。而-xms在我另一文章中提到過,是jvm的gc記憶體大小,達到這個值的時候,jvm才開始進行**。

設定大小應根據參與運算資料記憶體的大小除以0.6來設定,根據官方文件中所提到的spark.memory.fraction預設為0.6來推算相應資料需要設定的記憶體大小,如運算資料為8g,則應設定為14g左右。

4.補充

磁碟空間不足問題:

由於spark為減少io開銷而將job中間輸出結果儲存在了本機記憶體中,因此設定spark快取目錄,

在設定sparkconf時新增引數.set("spark.local.dir","e:\sparktemp"),即設定spark本地快取目錄即可。

Spark記憶體管理

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

Spark 記憶體分配

這是spark1.5及以前堆記憶體分配圖 下邊對上圖進行更近一步的標註,紅線開始到結尾就是這部分的開始到結尾 spark 預設分配512mb jvm堆記憶體。出於安全考慮和避免記憶體溢位,spark只允許我們使用堆記憶體的90 這在spark的spark.storage.safetyfraction...

Spark 記憶體計算

list item spark是乙個快如閃電的統一分析引擎 計算框架 用於大規模資料集的處理。spark在做資料的批處理計算,計算效能大約是hadoop mapreduce的10 100倍,因為spark使用比較先進的基於dag任務排程,可以將乙個任務拆分成若干個階段,然後將這些階段分批次交給集群計...