Spark適用於哪些場景?不適用於哪些場景?

候鳥之戀發表於2022-08-15

Spark是一種通用的大資料計算框架,和傳統的大資料技術MapReduce有本質區別。前者是基於記憶體平行計算的框架,而mapreduce側重磁碟計算。Spark是加州大學伯克利分校AMP實驗室開發的通用記憶體平行計算框架,用於構建大型的、低延遲的資料分析應用程式。

 

Spark同樣支援離線計算和實時計算兩種模式。Spark離線計算速度要比Mapreduce快10-100倍。而實時計算方面,則依賴於SparkStreaming的批處理能力,吞吐量大。不過相比Storm,SparkStreaming並不能做到真正的實時。

 

Spark 適用於哪些場景?

Spark的設計理念(基於記憶體的迭代計算框架)出發,其最適合有迭代運算的或者需要多次操作特定資料集的應用場合。並且迭代次數越多,讀取的資料量越大,Spark的應用效果就越明顯。

 

因此,對於機器學習之類的 “迭代式”應用,Spark可謂拿手好戲,要比HadoopMapReduce快數十倍。另外,SparkStreaming因為記憶體儲存中間資料的特性,處理速度非常快,也可以應用於需要實時處理大資料的場合。

 

Spark 不適用於哪些場景?

對於那種非同步細粒度更新狀態的應用,例如 Web服務的儲存或增量的Web爬蟲和索引,也就是對於那種增量修改的應用模型不適合。gendan5.com/zs/djia.html

 

Spark也不適合做超級大的資料量的處理,這裡所說的“超級大”是相對於這個叢集的記憶體容量而言的,因為Spark要將資料儲存在記憶體中。一般來說,10TB以上(單次分析)的資料就可以算是“超級大”的資料了。

 

運用 Spark有哪些優勢呢?

1、高效性

不同於 MapReduce將中間計算結果放入磁碟中,Spark採用記憶體儲存中間計算結果,減少了迭代運算的磁碟IO,並透過平行計算DAG圖的最佳化,減少了不同任務之間的依賴,降低了延遲等待時間。記憶體計算下,Spark 比 MapReduce 快100倍。

 

2、易用性

不同於 MapReduce僅支援Map和Reduce兩種程式設計運算元,Spark提供了超過80種不同的Transformation和Action運算元,如map,reduce,filter,groupByKey,sortByKey,foreach等,並且採用函數語言程式設計風格,實現相同的功能需要的程式碼量極大縮小。

 

3、通用性

Spark提供了統一的解決方案。Spark可以用於批處理、互動式查詢(Spark SQL)、實時流處理(Spark Streaming)、機器學習(Spark MLlib)和圖計算(GraphX)。

 

4、相容性

Spark能夠跟很多開源工程相容使用。如Spark可以使用Hadoop的YARN和Apache Mesos作為它的資源管理和排程器,並且Spark可以讀取多種資料來源,如HDFS、HBase、MySQL等。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70014563/viewspace-2910507/,如需轉載,請註明出處,否則將追究法律責任。

相關文章