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限制的方法。
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的侷限性。
免費領取技術資料及影片
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69976011/viewspace-2697788/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- TCP的侷限性有哪些?TCP
- 相比國科雲解析,傳統DNS解析技術有哪些侷限性?DNS
- 微服務說的侷限性微服務
- Flutter不能做什麼:侷限性Flutter
- 論深度學習的侷限性深度學習
- [譯] 深度學習的侷限性深度學習
- 流程卡的應用及其侷限性
- 敏捷軟體過程的侷限性敏捷
- 公民資料科學家的侷限性資料科學
- Go 1.18泛型的侷限性初探Go泛型
- Github Copilot 的優點和侷限性 - hrithwikGithub
- 設計模式的侷限性與適用性設計模式
- 計算形式化和表徵也有侷限性
- Android應用視窗突破手機侷限性Android
- JavaScript 微觀效能測試、歷史和侷限性JavaScript
- Apache Spark有何用途?有何特點?ApacheSpark
- 對關係型資料庫侷限性的重新思考資料庫
- 一文帶你理解深度學習的侷限性深度學習
- 帶有Apache Spark的Lambda架構ApacheSpark架構
- 瞭解有關符號人工智慧,象徵性AI的好處和侷限性符號人工智慧AI
- [AI開發]影片結構化類應用的侷限性AI
- 遠端控制軟體 TeamViewer 的侷限性和替代方案View
- [譯]Object的侷限性——Kotlin中的帶參單例模式ObjectKotlin單例模式
- 計算機視覺應用:深度學習的力量和侷限性計算機視覺深度學習
- 如何突破傳統升級系統在RPG中的侷限性?
- PLM對解決“資訊孤島”問題的意義和侷限性
- Java泛型(三):型別擦除帶來的約束與侷限性Java泛型型別
- Spark相對於Hadoop有哪些優勢?SparkHadoop
- Apache Ignite 與 Apache Spark比較ApacheSpark
- Apache Spark Day3ApacheSpark
- Apache Spark原始碼剖析ApacheSpark原始碼
- 【圖機器學習】cs224w Lecture 16 - 圖神經網路的侷限性機器學習神經網路
- 深度學習在視覺上的侷限性以及我們如何對付它們深度學習視覺
- 搞懂Java橋接模式,打破繼承侷限性,輕鬆實現多維變化Java橋接模式繼承
- 計算機程式的思維邏輯 (37) - 泛型 (下) - 細節和侷限性計算機泛型
- 張鈸院士:人工智慧取得了一些進展 但仍有很大侷限性人工智慧
- Apache Spark 入門簡介ApacheSpark
- Spark流教程 :使用 Apache Spark 的Twitter情緒分析SparkApache