Spark Core 性能調優之配置內存

操作場景

? ? ? ? Spark是內存計算框架,計算過程中內存不夠對Spark的執行效率影響很大。可以通過監控GC(Garbage Collection),評估內存中RDD的大小來判斷內存是否變成性能瓶頸,并根據情況優化。

? ? ? ? 監控節點進程的GC情況(在客戶端的conf/spark-default.conf配置文件中,在spark.driver.extraJavaOptions和spark.executor.extraJavaOptions配置項中添加參數:

"-verbose:gc?-XX:+PrintGCDetails -XX:+PrintGCTimeStamps"),如果頻繁出現Full ?GC,需要優化GC。把RDD做Cache操作,通過日志查看RDD在內存中的大小,如果數據太大,需要改變RDD的存儲級別來優化。

操作步驟

● 優化GC,調整老年代和新生代的大小和比例。在客戶端的conf/spark-default.conf配置文件中,在spark.driver.extraJavaOptions和spark.executor.extraJavaOptions配置項中添加參數:-XX:NewRatio。如,"

-XX:NewRatio=2",則新生代占整個堆空間的1/3,老年代占2/3。

● 開發Spark應用程序時,優化RDD的數據結構。

? ? ■ 使用原始類型數組替代集合類,如可使用fastutil庫。

? ? ■ 避免嵌套結構。

? ? ■ Key盡量不要使用String。

● 開發Spark應用程序時,建議序列化RDD。

? ? RDD做cache時默認是不序列化數據的,可以通過設置存儲級別來序列化RDD減小內存。例如:

testRDD.persist(StorageLevel.MEMORY_ONLY_SER)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容