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任務排程,可以將乙個任務拆分成若干個階段,然後將這些階段分批次交給集群計...