天天看點

Apache Spark有哪些局限性

Apache Spark是行業中流行和廣泛使用的大資料工具之一。Apache Spark已成為業界的熱門話題,并且如今非常流行。但工業正在轉移朝向apache flink。

Apache Spark簡介

Apache Spark是為快速計算而設計的開源,閃電般快速的叢集計算架構。Apache Spark擴充了MapReduce模型,以有效地将其用于多種計算,包括流處理和互動式查詢。Apache Spark的主要功能是記憶體中的群集計算,可以提高應用程式的處理速度。

Spark計劃用于涵蓋各種工作負載,例如疊代算法,批處理應用程式,流和互動式查詢。除了支援這些工作負載,它還減少了維護不同工具的管理障礙。

Apache Spark架構的核心元件

Apache Spark架構由負責Spark功能的主要五個元件組成。這些組成部分是–

Spark SQL和資料架構–在頂部,Spark SQL允許使用者運作SQL和HQL查詢以處理結構化和半結構化資料。

SparkStreaming – Spark流傳輸有助于處理實時流資料,即日志檔案。它還包含用于處理資料流的API

MLib機器學習– MLib是具有機器學習功能的Spark庫。它包含各種機器學習算法,例如回歸,聚類,協作過濾,分類等。

GraphX –支援圖形計算的庫稱為GraphX。它使使用者能夠執行圖操作。它還提供了圖形計算算法。

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的局限性。