spark調(diào)優(yōu)該怎么理解

spark調(diào)優(yōu)該怎么理解,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設、高性價比淮上網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式淮上網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設找我們,業(yè)務覆蓋淮上地區(qū)。費用合理售后完善,10余年實體公司更值得信賴。

Data Serialization

spark現(xiàn)在提供Java serialization和Kryo serialization庫

Java serialization比較慢,Kryo serialization比較快

Memory Tuning

Determining Memory Consumption

衡量你的數(shù)據(jù)集消耗內(nèi)存量最好的方式是創(chuàng)建RDD,并放入cache中,通過查看你的driver程序SparkContext logs來得出結(jié)論。

Tuning Data Structures

降低內(nèi)存消耗的第一種方式是避免使用增加開銷的java特性,例如基于指針的數(shù)據(jù)結(jié)構(gòu)和封裝的對象。有幾種方法來避免:

1.將你的數(shù)據(jù)結(jié)構(gòu)設計為對象的數(shù)組,或者原始類型,而不是java或者scala集合類(例如HashMap)

fastutil庫提供原始數(shù)據(jù)類型的方便集合類,并且這些類與java標準庫兼容。(http://fastutil.di.unimi.it/)

2.如果可以的話,避免使用有很多小對象的內(nèi)嵌數(shù)據(jù)結(jié)構(gòu)

3.考慮使用數(shù)字id或者枚舉對象來代替string作為key

4.如果給spark使用的內(nèi)存少于32g,設置JVM flag -XX:+UseCompressedOops來使指針的大小從原來的8個byte變成4個byte.

你可以在spark-env.sh里添加這個參數(shù)。

Serialized RDD Storage

當你的對象通過調(diào)優(yōu)高效地存儲后仍然很大,一個簡單的減少內(nèi)存使用的方式是以序列化格式的方式存儲對象,使用 RDD persistence API中序列化的等級來指定,例如MEMORY_ONLY_SER。

spark將每個RDD塊存儲為一個大的byte數(shù)組。將存儲的數(shù)據(jù)序列化唯一的缺點是訪問時間變慢了,這應歸于服務器一直在忙碌于每個對象的反序列化。

如果你想在內(nèi)存中以序列化格式保存數(shù)據(jù),我們極力地推薦使用Kryo庫,因為這會產(chǎn)生比java序列化小很多的文件大小。(當然會比沒有序列化的原生java object更?。?/p>

關于spark調(diào)優(yōu)該怎么理解問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關知識。

網(wǎng)頁標題:spark調(diào)優(yōu)該怎么理解
文章URL:http://www.muchs.cn/article24/ipppce.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)做網(wǎng)站、服務器托管、App開發(fā)、網(wǎng)站設計、品牌網(wǎng)站建設

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化