Apache Spark有哪些侷限性

Apache Spark是行業中流行和普遍使用的大數據工具之一。Apache Spark已成爲業界的熱門話題,而且現在很是流行。但工業正在轉移朝向apache flink。算法

Apache Spark簡介數據庫

Apache Spark是爲快速計算而設計的開源,閃電般快速的集羣計算框架。Apache Spark擴展了MapReduce模型,以有效地將其用於多種計算,包括流處理和交互式查詢。Apache Spark的主要功能是內存中的羣集計算,能夠提升應用程序的處理速度。apache

Spark計劃用於涵蓋各類工做負載,例如迭代算法,批處理應用程序,流和交互式查詢。除了支持這些工做負載,它還減小了維護不一樣工具的管理障礙。緩存

Apache Spark框架的核心組件框架

Apache Spark框架由負責Spark功能的主要五個組件組成。這些組成部分是–機器學習

Spark SQL和數據框架–在頂部,Spark SQL容許用戶運行SQL和HQL查詢以處理結構化和半結構化數據。分佈式

SparkStreaming – Spark流傳輸有助於處理實時流數據,即日誌文件。它還包含用於處理數據流的APIide

MLib機器學習– MLib是具備機器學習功能的Spark庫。它包含各類機器學習算法,例如迴歸,聚類,協做過濾,分類等。工具

GraphX –支持圖形計算的庫稱爲GraphX。它使用戶可以執行圖操做。它還提供了圖形計算算法。oop

Apache Spark Core API –它是Spark框架的內核,並提供了一個執行Spark應用程序的平臺。

下圖清楚地顯示了Apache Spark的核心組件。

Apache Spark有哪些侷限性

Apache Spark的侷限性

用戶在使用它時必須面對Apache Spark的一些限制。本文徹底側重於Apache Spark的限制以及克服這些限制的方法。讓咱們詳細閱讀Apache Spark的如下限制以及克服這些Apache Spark限制的方法。

1.沒有文件管理系統

Apache Spark中沒有文件管理系統,須要與其餘平臺集成。所以,它依賴於Hadoop等其餘平臺或任何其餘基於雲的文件管理系統平臺。這是Apache Spark的主要限制之一。

2.不進行實時數據處理

Spark不徹底支持實時數據流處理。在Spark流中,實時數據流被分爲幾批,稱爲Spark RDD(彈性分佈式數據庫)。在這些RDD上應用諸如join,map或reduce等操做來處理它們。處理後,結果再次轉換爲批次。這樣,Spark流只是一個微批處理。所以,它不支持完整的實時處理,可是有點接近它。

3.昂貴

在談論大數據的經濟高效處理時,將數據保存在內存中並不容易。使用Spark時,內存消耗很是高。Spark須要巨大的RAM來處理內存。Spark中的內存消耗很是高,所以用戶友好性並不高。運行Spark所需的額外內存成本很高,這使Spark變得昂貴。

4.小文件發行

當咱們將Spark與Hadoop一塊兒使用時,存在文件較小的問題。HDFS附帶了數量有限的大文件,但有大量的小文件。若是咱們將Spark與HDFS一塊兒使用,則此問題將持續存在。可是使用Spark時,全部數據都以zip文件的形式存儲在S3中。如今的問題是全部這些小的zip文件都須要解壓縮才能收集數據文件。

僅當一個核心中包含完整文件時,才能夠壓縮zip文件。僅按順序刻錄核心和解壓縮文件須要大量時間。此耗時的長過程也影響數據處理。爲了進行有效處理,須要對數據進行大量改組。

5.延遲

Apache Spark的等待時間較長,這致使較低的吞吐量。與Apache Spark相比,Apache Flink的延遲相對較低,但吞吐量較高,這使其比Apache Spark更好。

6.較少的算法

在Apache Spark框架中,MLib是包含機器學習算法的Spark庫。可是,Spark MLib中只有少數幾種算法。所以,較少可用的算法也是Apache Spark的限制之一。

7.迭代處理

迭代基本上意味着重複使用過渡結果。在Spark中,數據是分批迭代的,而後爲了處理數據,每次迭代都被調度並一個接一個地執行。

8.窗口標準

在Spark流傳輸中,根據預設的時間間隔將數據分爲小批。所以,Apache Spark支持基於時間的窗口條件,但不支持基於記錄的窗口條件。

9.處理背壓

背壓是指緩衝區太滿而沒法接收任何數據時,輸入/輸出開關上的數據累積。緩衝區爲空以前,沒法傳輸數據。所以,Apache Spark沒有能力處理這種背壓,但必須手動完成。

10.手動優化

使用Spark時,須要手動優化做業以及數據集。要建立分區,用戶能夠自行指定Spark分區的數量。爲此,須要傳遞要固定的分區數做爲並行化方法的參數。爲了得到正確的分區和緩存,應該手動控制全部此分區過程。

儘管有這些限制,但Apache Spark仍然是流行的大數據工具之一。可是,如今已經有許多技術取代了Spark。Apache Flink是其中之一。Apache Flink支持實時數據流。所以,Flink流比Apache Spark流更好。

總結

每種工具或技術都具備一些優勢和侷限性。所以,Apache Spark的限制不會將其從遊戲中刪除。它仍然有需求,而且行業正在將其用做大數據解決方案。最新版本的Spark進行了不斷的修改,以克服這些Apache Spark的侷限性。

免費領取技術資料及視頻
Apache Spark有哪些侷限性

相關文章
相關標籤/搜索