記憶體有限的情況下 Spark 如何處理 T 級別的資料?

時間 2021-05-05 17:10:48

1樓:範斌

除了各位提供的從Spark角度來解決, 這裡提供乙個另乙個角度.

如果只是作為輸入資料的日誌資料達到了TB量級, 可以考慮使用Alluxio 來儲存這些輸入資料. 如果沒有聽說過Alluxio, 它和Spark一樣起源於Berkeley的AMPLab. 在AMPLab的BDAS大資料棧中是儲存那部分.

特點是實現了和HDFS一樣的檔案系統介面(這樣你的程式都不用改, 只需要把位址從hdfs://才成alluxio://), 且在強調使用記憶體作為儲存主存的時候也實現了分層儲存.

使得記憶體不夠大的時候可以填上硬碟或者SSD來擴充, 同時這一分層對應用(比如Spark)是透明的, 應用並不感知. Alluxio內部使用LRU等演算法保證熱資料盡量在記憶體當中. 如果有興趣可以看一下下面幾篇技術部落格

使用Alluxio高效儲存Spark RDD - Blog | Alluxio

基於Alluxio系統的Spark DataFrame高效儲存管理技術 - Blog | Alluxio

2樓:Kevin

這t級的資料應該不是都需要裝進記憶體才能算的吧

具體技術方面硬碟湊,減少序列化成本,或者直接不系列化按byte儲存和傳輸,或者用direct byte buffer之類的,但是這些都只是用硬碟湊時候做的效能優化。

從資料流程上梳理可能更有效,梳理資料依賴關係,從而減少重複計算(復用計算結果),減少網路傳輸,把高頻資料放記憶體盡量避免放硬碟,低頻資料扔硬碟

3樓:大牛牛

如果使用者沒有要求Spark cache該RDD的結果,那麼這個過程占用的記憶體是很小的,乙個元素處理完畢後就落地或扔掉了(概念上如此,實現上有buffer),並不會長久地占用記憶體。只有在使用者要求Spark cache該RDD,且storage level要求在記憶體中cache時,Iterator計算出的結果才會被保留,通過cache manager放入記憶體池。

4樓:董鑑之

感覺各位都沒給出樓主乙個很明確的回答,個人在專案中利用SPARK處理T級別的複雜資料處理,例如多次SHUFFLE,對集群的壓力很大,但是經過調優以後還是可以執行的,關鍵幾點在這裡大概說一下:

1、對SHUFFLE過程的記憶體及配置資訊的調整,SHUFFLE過程的記憶體比例容量,嘗試次數,等待時長等等的設定可以在對SHUFFLE處理過程比較多的業務場景提高程式的穩定性。

2、在讀取檔案或者進行函式操作時,可以增加PERSIST函式對處理結果進行選擇,SPARK提供了記憶體,記憶體+磁碟,記憶體+磁碟+副本等方式供開發者選擇,在資料集很大的情況下,建議使用記憶體+磁碟+副本的方法,在某乙個EXCUTOR宕機時,可以利用副本到其他節點上繼續執行。

3、就是對TASK,MEMORY等根據集群的物理機情況進行調配,達到程式執行的最佳狀態。

預算有限的情況下,如何裝修出有品質感的房子?

不問 盡量簡潔風格,統一色調,可以多去參考鄰居家的裝修,面積小的話,可以省些設計的錢,不要找裝修公司,裝修公司自己利潤至少要30 找個靠譜的工程監理只包工,材料自己去買,這些都是基於你或者你家家人時間充足的情況 然後,如果沒時間還是去找靠譜的裝修公司吧,反正記住,便宜沒好貨,後期增項一般也是會有的 ...

在預算有限的情況下,買iPhone還是iPad

Straw 個人覺得離開了其他蘋果裝置支援的ipad沒那麼香,蘋果裝置與裝置之間的連線做的非常好,所以iphone ipad其實是最好的情況 看你的情況預算有限建議iphone吧,手機是主力一直出現問題很不方便的 金士心 如果不是iOS的重度使用者,也不是果粉,為什麼不試試安卓手機 安卓平板呢?因為...

如何在陪伴時間有限的情況下建立良好的親子關係?核心要素是什麼?

慕珂育兒 如果時間有限,建立良好的親子關係,最好的方式就是陪孩子一起做事情,可以根據自己時間,來決定所做事情的時間長短。比如每天閱讀30分鐘,雷打不動,堅持幾年,你跟孩子一起徜徉在書本裡面的這些經歷,就成為了你們共同的美好回憶。這些關於愛的回憶,它讓你和孩子之間有深深的聯結,孩子從中感受到的是父母對...