經(jīng)常有人拿 Ignite 和 Spark 進(jìn)行比較,然后搞不清兩者的區(qū)別和聯(lián)系。Ignite 和 Spark,如果籠統(tǒng)歸類,都可以歸于內(nèi)存計算平臺,然而兩者功能上雖然有交集,并且 Ignite 也會對 Spark 進(jìn)行支持,但是不管是從定位上,還是從功能上來說,它們差別巨大,適用領(lǐng)域有顯著的區(qū)別。本文從各個方面對此進(jìn)行對比分析,供各位技術(shù)選型參考。
一、綜述
Ignite 和 Spark 都為 Apache 的頂級開源項目,遵循 Apache 2.0 開源協(xié)議,經(jīng)過多年的發(fā)展,二者都已經(jīng)脫離了單一的技術(shù)組件或者框架的范疇,向著多元化的生態(tài)圈發(fā)展,并且發(fā)展速度都很快。
Ignite
Ignite 技術(shù)來源于 GridGain 公司的商業(yè)產(chǎn)品,于 2014 年將絕大部分功能捐贈給 Apache 社區(qū),并于 2015 年 8 月畢業(yè)成為 Apache 的頂級項目。Ignite 目前一直保持著高強(qiáng)度的快速迭代式開發(fā),基本一個季度發(fā)布一個大版本,從提交數(shù)量、版本發(fā)布數(shù)量等若干指標(biāo)來評估,一直保持在 Apache 社區(qū) 300 多個開源項目的前五位。目前已經(jīng)聚攏了來自多家組織或公司的眾多開發(fā)者,處于非?;钴S的狀態(tài),開發(fā)者社區(qū)和產(chǎn)品生態(tài)正在形成中。
Spark
作為 Hadoop 生態(tài)圈重要成員的 Spark 于 2009 年由 Matei Zaharia 在加州大學(xué)伯克利分校 AMPLab 開發(fā),于 2013 年 6 月捐贈給 Apache 基金會并切換協(xié)議至 Apache2.0,2014 年 2 月畢業(yè)成為 Apache 的頂級項目。鑒于 Spark 核心計算模型的先進(jìn)性,它吸引了眾多大企業(yè)和組織的積極參與,促成了 Spark 的高速發(fā)展和社區(qū)的空前繁榮,隨著 Spark 技術(shù)不斷地向縱深發(fā)展以及向外延伸,形成了龐大的 Spark 社區(qū)和生態(tài)圈,目前幾乎成為了大數(shù)據(jù)領(lǐng)域影響力最大的開源項目。
二、定位
Ignite 和 Spark 都是分布式架構(gòu),都?xì)w類于目前的大數(shù)據(jù)技術(shù)類別,二者都是利用大量內(nèi)存的高性能,為原有的技術(shù)方案進(jìn)行提速,但是定位差別很大。
Ignite
Ignite 的核心定位是一個分布式的內(nèi)存緩存解決方案,通過將數(shù)據(jù)保存在內(nèi)存中,提供比傳統(tǒng)的基于磁盤的方案更快的性能。然后在分布式緩存的基礎(chǔ)上,一方面進(jìn)一步深入,通過標(biāo)準(zhǔn) SQL 功能的引入,向分布式內(nèi)存數(shù)據(jù)庫的方向發(fā)展,一方面功能不斷擴(kuò)展,引入了內(nèi)存計算、流數(shù)據(jù)處理、機(jī)器學(xué)習(xí)等功能。Ignite 部署靈活,可以輕易地集成進(jìn)已有的系統(tǒng),非常方便地與已有的數(shù)據(jù)庫系統(tǒng)集成(NoSQL、HDFS 也支持),為已有的業(yè)務(wù)進(jìn)行加速服務(wù)。不顛覆已有架構(gòu),是 Ignite 很重要的邏輯。
Spark
Spark 的核心定位是一個分布式統(tǒng)一大數(shù)據(jù)分析引擎,通過先進(jìn)的 RDD 模型和大量內(nèi)存的使用,解決了使用 Hadoop 的 MapReduce 進(jìn)行多輪迭代式計算的性能問題。然后在 RDD 的基礎(chǔ)上不斷完善,引入了 Dataset 和 DataFrame、SparkSQL、Spark Streaming、SparkML 等更高級的功能。Spark 對 Hadoop 技術(shù)棧有非常好的支持,很多可以直接集成,雖然也可以支持 RDBMS 的讀寫,但是這不是 Spark 主要的關(guān)注方向。
三、核心技術(shù)
Ignite 和 Spark 核心技術(shù)截然不同。
Ignite
Ignite 的核心數(shù)據(jù)結(jié)構(gòu)為分布式哈希,即鍵-值型存儲,和 Redis 等可以歸于同一類,對于分布式內(nèi)存數(shù)據(jù)庫,核心技術(shù)來源于 H2 數(shù)據(jù)庫,也即 Ignite 對 SQL 的支持來源于 H2 的 SQL 引擎。Ignite 的核心計算模型為 MapReduce+支持 SQL 查詢的緩存優(yōu)化。
Ignite 的內(nèi)存數(shù)據(jù)模型為固化內(nèi)存架構(gòu),同時支持內(nèi)存存儲和磁盤存儲(可選)。數(shù)據(jù)保存在堆外,因此只要內(nèi)存夠用,不用擔(dān)心內(nèi)存溢出,也不用擔(dān)心大量占用內(nèi)存導(dǎo)致垃圾回收暫停。
Spark
Spark 的核心是建立在統(tǒng)一的抽象 RDD 之上,使得 Spark 的各個組件可以無縫進(jìn)行集成,在同一個應(yīng)用程序中完成大數(shù)據(jù)計算任務(wù)。RDD 的設(shè)計理念源自 AMP 實驗室發(fā)表的論文《Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing》。RDD 可以認(rèn)為是 MapReduce 的超集,也即 RDD 也可以實現(xiàn)傳統(tǒng)的 MapReduce 計算機(jī)制。
四、部署模型
Ignite 和 Spark 的組網(wǎng)基本模式有很大的不同,但在更高層面的資源管理上,支持能力是差不多的。
Ignite
Ignite 集群基于無共享架構(gòu),所有的集群節(jié)點(diǎn)都是平等的、獨(dú)立的,整個集群不存在單點(diǎn)故障。 通過靈活的 Discovery SPI 組件,Ignite 節(jié)點(diǎn)可以自動地發(fā)現(xiàn)對方,因此只要需要,可以輕易地對集群進(jìn)行縮放。
Ignite 可以獨(dú)立運(yùn)行,可以組成集群,可以運(yùn)行于 Kubernetes 和 Docker 容器中,也可以運(yùn)行在 Apache Mesos 以及 Hadoop Yarn 上,可以運(yùn)行于虛擬機(jī)和云環(huán)境,也可以運(yùn)行于物理機(jī),從技術(shù)上來說,集群部署在哪里,是沒有限制的。
Ignite 還支持嵌入式部署,也就是和應(yīng)用集成在一起。
Spark
Spark 支持四種分布式部署方式:分別是 Standalone、Spark on Mesos、Spark on YARN 和 Kubernetes。
Spark 的部署屬于 Master/Slave 模式,可能存在單點(diǎn)故障問題,但是可以通過 ZooKeeper 解決。
五、功能
內(nèi)存計算
Ignite 和 Spark 都有內(nèi)存計算的能力,尤其內(nèi)存計算是 Spark 的主打功能,從技術(shù)原理上來看它們的能力:SparkRDD > Ignite MapReduce+Cache > Hadoop MapReduce。
但具體來說,Ignite 的計算模型優(yōu)于 Hadoop 毋庸置疑。但是 Ignite 和 Spark,雖然 Ignite 技術(shù)原理上不如 SparkRDD 先進(jìn),但是落實到具體的實踐中,則要看具體的業(yè)務(wù)場景、技術(shù)人員對技術(shù)和設(shè)計的掌控力、代碼優(yōu)化程度等,無法直接下結(jié)論,這個要具體問題具體分析。
Spark 擅長的多輪迭代式計算、交互式計算、圖計算等,Ignite 則沒有對應(yīng)的解決方案。
Ignite
Ignite 的計算功能原理與 Hadoop 一致,都是 MapReduce 范式,即可以將一個批量任務(wù)拆分為多個部分,然后在不同的節(jié)點(diǎn)并行執(zhí)行,這樣就可以并行地利用所有節(jié)點(diǎn)的資源,來減少計算任務(wù)的整體執(zhí)行時間。
但是 Ignite 的計算有兩個重要的獨(dú)特之處,一個是鑒于 Ignite 靈活的部署模型,Ignite 可以是離線計算,也可以是在線計算,對于在線的場景,比如 OLTP 業(yè)務(wù),它可以通過將請求中的計算負(fù)載同步地放在多個可用節(jié)點(diǎn)上,然后將結(jié)果返回,這樣可以提高整個系統(tǒng)的擴(kuò)展性和容錯能力。 另一個是計算可以和數(shù)據(jù)并置,即計算會被發(fā)送到要處理的數(shù)據(jù)所在的節(jié)點(diǎn),這樣會使開銷最小化。
Spark
Spark 的計算模型從原理上來說,作為 MapReduce 的超集是非常先進(jìn)的,Spark 也具有 MapReduce 的機(jī)制和開發(fā)接口,所以用 Spark 實現(xiàn) MapReduce 計算模型是可以的。
Spark 的核心概念 RDD,作為一個通用的數(shù)據(jù)抽象,著重解決了 MapReduce 模型在處理多輪迭代式算法(比如機(jī)器學(xué)習(xí)、圖算法等)的性能瓶頸,避免了中間結(jié)果落盤導(dǎo)致的大量數(shù)據(jù)復(fù)制、磁盤 IO 和序列化開銷。但是 Spark 的計算功能是按照離線系統(tǒng)設(shè)計的,無法實現(xiàn) Ignite 的在線計算功能。
存儲支持能力
Ignite 和 Spark 都可以將第三方存儲作為數(shù)據(jù)來源用作后續(xù)的處理,兩者對第三方存儲的支持程度、側(cè)重點(diǎn)完全不同。這里說的第三方存儲,暫時劃分為傳統(tǒng)的 RDBMS 和 NoSQL(HDFS、Hive、Cassandra 等)。但是 Ignite 在支持第三方存儲的同時,本身還具有原生持久化的能力。
Ignite
RDBMS:Ignite 作為一個緩存系統(tǒng),天然對 RDBMS 有良好的支持,基本上只要支持 JDBC/ODBC 協(xié)議的數(shù)據(jù)庫都沒有問題。對于數(shù)據(jù)的加載、數(shù)據(jù)的讀寫及其一致性(事務(wù))保證、各種工具的支持、各種通信協(xié)議的支持都一應(yīng)俱全,是一個完整的方案;
NoSQL:Ignite 對于各種 NoSQL 數(shù)據(jù)庫的支持是有限的,因為功能定位的原因,不是任何 NoSQL 產(chǎn)品都適合和 Ignite 整合進(jìn)而提升能力,就目前來說,Ignite 在不同的功能場景對 NoSQL 提供了支持,包括對 HDFS 的支持,也包括與 Cassandra 的原生集成;
原生持久化:Ignite 基于固化內(nèi)存架構(gòu),提供了原生持久化,可以同時處理存儲于內(nèi)存和磁盤上的數(shù)據(jù)和索引,它將內(nèi)存計算的性能和擴(kuò)展性與磁盤持久化和強(qiáng)一致性整合到一個系統(tǒng)中。 原生持久化以有限的性能損失,透明地提供了更強(qiáng)大的功能,即使整個集群重啟,內(nèi)存不需要預(yù)熱,數(shù)據(jù)可以直接訪問。
Spark
RDBMS:SparkRDD 可以將 RDBMS 作為數(shù)據(jù)來源之一,支持 RDBMS 數(shù)據(jù)的批量讀寫,也支持各種類型的 RDBMS,但是 Spark 對 RDBMS 的讀寫,屬于批量模式,Spark 更多地會將 RDBMS 作為分析型業(yè)務(wù)的數(shù)據(jù)來源之一,最后如有必要,則將業(yè)務(wù)分析的結(jié)果批量回寫 RDBMS;
NoSQL:Spark 原生支持 JDBC、JSON、Parquet、csv、libsvm 以及 orcFile 等,也可以通過擴(kuò)展接口自定義數(shù)據(jù)源。Spark 可以直接或者通過各種連接器讀取 Hive、Hbase、Cassandra 中的數(shù)據(jù),然后創(chuàng)建對應(yīng)的 RDD,寫入也是同理,這個能力是 Ignite 所不具備的;
原生持久化:Spark 不具備原生的持久化能力。
SQL
Ignite 和 Spark 都支持 SQL,但是兩者的定位和能力,有所不同。
Ignite
Ignite SQL 目前的語法兼容于 ANSI-99,支持查詢、刪除、更新與插入,但語法和功能與標(biāo)準(zhǔn)并不完全一致。Ignite 如果做好了數(shù)據(jù)并置,SQL 查詢的性能是很好的,同時 Ignite 還支持索引,這都進(jìn)一步提升了 Ignite SQL 的能力。另外,Ignite SQL 對緩存的功能進(jìn)行了極大的增強(qiáng),通常用于緩存的在線查詢和計算,用于離線數(shù)據(jù)處理也是可以的。
Spark
SparkSQL 最初來源于 Shark 項目,后來兩者進(jìn)行了合并,SparkSQL 構(gòu)建于 Dataset/DataFrame 機(jī)制基礎(chǔ)上,目前只支持查詢,主要適用于分析型業(yè)務(wù)以及對來自不同數(shù)據(jù)源的結(jié)構(gòu)化數(shù)據(jù)進(jìn)行處理。它也可以進(jìn)行交互式查詢,因為不支持索引等等原因,所以性能較差,響應(yīng)時間可能較長。
數(shù)據(jù)一致性(事務(wù))
Ignite
Ignite 整體來說對事務(wù)的支持還不完善,具體來說,在鍵-值 API 層面,有完善的事務(wù)機(jī)制,主要原理來自于經(jīng)過優(yōu)化的二階段提交協(xié)議,但是 SQL 層面的 DML 語句還不支持事務(wù),未來版本會解決該問題。
在計算層面,因為支持豐富的編程接口,也可以非常容易地與各種開源的 ORM 框架集成,所以也可以方便地對事務(wù)進(jìn)行細(xì)粒度的控制,比如 CRUD 都是沒問題的。
Spark
SparkSQL 本身并不提供事務(wù)機(jī)制。Spark 本身也不適用于 RDBMS 的細(xì)粒度數(shù)據(jù)維護(hù),RDBMS 對于 Spark 來說,只是數(shù)據(jù)的一個來源和存儲地之一,通常都是批量操作,如果批量操作失敗,Spark 有容錯機(jī)制可以重來,以保證整體的一致性。
流計算
Spark 有 Spark Streaming,Ignite 也支持流數(shù)據(jù)處理。
Ignite
Ignite 可以與主流的流處理技術(shù)和框架進(jìn)行集成,比如 Kafka、Camel、Storm 與 JMS,提供可擴(kuò)展和容錯的能力。流處理技術(shù)為 Ignite 提供了一種數(shù)據(jù)加載機(jī)制,針對流式數(shù)據(jù),Ignite 也提供了各種處理和查詢功能。Ignite 社區(qū)官方提供了 10 種流處理技術(shù)的集成實現(xiàn),利用統(tǒng)一的 API,開發(fā)者也可以自行開發(fā)流處理技術(shù)實現(xiàn)。Ignite 為所有流入 Ignite 的數(shù)據(jù)以可擴(kuò)展和容錯的方式提供至少一次保證。
Spark
Spark Streaming 是基于 Spark 的流式批處理引擎,其基本原理是把輸入數(shù)據(jù)以某一時間間隔批量的處理,即以時間為單位切分?jǐn)?shù)據(jù)流,每個切片內(nèi)的數(shù)據(jù)對應(yīng)一個 RDD,進(jìn)而可以采用 Spark 引擎進(jìn)行快速計算。其同樣支持眾多的數(shù)據(jù)源,內(nèi)部的數(shù)據(jù)表示形式為 DStream。Spark Streaming 吞吐量高,可以做復(fù)雜的業(yè)務(wù)邏輯,但是秒級別的延遲是否符合業(yè)務(wù)需求需要確認(rèn)。Spark Streaming 可以與 Spark 其他技術(shù)完美集成,包括 SparkML、SparkSQL 等。
機(jī)器學(xué)習(xí)
Ignite 和 Spark 都支持機(jī)器學(xué)習(xí)。
Ignite
Ignite 從 2.5 版本開始,提供了完整的機(jī)器學(xué)習(xí)解決方案,Ignite 的機(jī)器學(xué)習(xí)有兩個優(yōu)點(diǎn):一個是如果已經(jīng)在 Ignite 中持有了大量的數(shù)據(jù),那么繼續(xù)在 Ignite 中進(jìn)行機(jī)器學(xué)習(xí)的訓(xùn)練和推理,就不需要在不同系統(tǒng)間進(jìn)行 ETL 的等待,提高效率。另一個是 Ignite 提供了一系列的機(jī)器學(xué)習(xí)和深度學(xué)習(xí)算法,對 Ignite 的分布式并置處理進(jìn)行優(yōu)化,這樣在處理大規(guī)模的數(shù)據(jù)集或者不斷增長的輸入數(shù)據(jù)流時,提供了內(nèi)存級的速度和近乎無限的擴(kuò)展性,而不需要將數(shù)據(jù)移到另外的存儲。目前支持的算法包括回歸、分類、聚類以及對數(shù)據(jù)進(jìn)行預(yù)處理等。另外 Ignite 還支持了一組遺傳算法,該算法適合于以最優(yōu)的方式檢索大量復(fù)雜的數(shù)據(jù)集。
Spark
Spark 很早就包含了機(jī)器學(xué)習(xí)庫,RDD 模型面向的一個主要場景就是機(jī)器學(xué)習(xí)這樣的多輪迭代式計算。目前的 Spark 機(jī)器學(xué)習(xí)庫有 2 個實現(xiàn),正在逐步向 SparkML 過渡,SparkML 基于 DataFrame API,更強(qiáng)大更靈活,而傳統(tǒng)的 MLlib 會處于維護(hù)狀態(tài)。SparkML 基于 DataFrames 對 API 進(jìn)行了統(tǒng)一,使用體驗更友好??梢允褂?SparkSQL 等更高級的功能,支持流水線,特別是特征變換。Spark 的機(jī)器學(xué)習(xí)因為 RDD 的原因性能更好,支持的算法也更多。
圖計算
Ignite
暫不支持
Spark
Spark 中包含了 GraphX,這是一個圖計算組件。它在 RDD 基礎(chǔ)上引入了新的 Graph 抽象,為了支持圖形計算,GraphX 公開了一組基本運(yùn)算符(例如子圖、連接頂點(diǎn)和聚合消息)以及 Pregel API 的優(yōu)化變型。此外,GraphX 還包括了越來越多的圖形算法和構(gòu)造者,以簡化圖形分析任務(wù)。
開發(fā)語言和客戶端協(xié)議
Ignite
Ignite 是以 Java 語言為主進(jìn)行開發(fā)的,因此可以在 JVM 支持的任何操作系統(tǒng)和架構(gòu)上部署和運(yùn)行。Java 的 API 支持 Ignite 的所有功能,使用 Java 或者 Scala 開發(fā)的應(yīng)用,相關(guān)的邏輯可以直接嵌入 Ignite,然后借助于 SQL 以及鍵-值操作與集群進(jìn)行交互,執(zhí)行分布式計算和機(jī)器學(xué)習(xí)算法等等。
除了 Java,Ignite 還支持 .NET 平臺與 C++,Ignite.NET 和 Ignite C++ 使用 JNI,會把大部分的調(diào)用轉(zhuǎn)發(fā)給 Java。
Ignite 還支持使用標(biāo)準(zhǔn)的 JDBC 或者 ODBC 連接,可以像其它 SQL 存儲一樣與 Ignite 進(jìn)行交互。Ignite 還為 Java、.NET 和 C++ 開發(fā)者提供原生的 SQL API,性能更好。
Ignite 還支持其它的語言訪問,比如 Python、Ruby、PHP 與 NodeJS,另外還可以考慮使用 Ignite 的二進(jìn)制客戶端協(xié)議接入集群。
Spark
Spark 使用 Scala 語言開發(fā),目前支持使用 Scala、Java、Python、R 語言開發(fā) Spark 程序。
監(jiān)控運(yùn)維工具支持
Ignite
Ignite 開源版沒有提供圖形化的監(jiān)控工具,但是提供了簡易的命令行工具,同時為了簡化開發(fā),Ignite 提供了圖形化的 Web 控制臺。
Ignite 運(yùn)行時可以通過 API 接口獲取大量的指標(biāo),通過編程的方式了解集群的狀況。
如果需要強(qiáng)大的監(jiān)控運(yùn)維工具,可以購買 GridGain 的商業(yè)版軟件和服務(wù)。如果搭建的是一個小規(guī)模的集群,鑒于 Ignite 的無共享架構(gòu),部署運(yùn)維都是比較簡單的。
Spark
Spark 啟動后會有一個 Web 控制臺,雖然不是很美觀,但是可以從總體上看到 Spark 的當(dāng)前運(yùn)行狀態(tài)。
Spark 屬于 Master/Slave 模式,如果直接拿開源版本搭建大規(guī)模集群,部署運(yùn)維還是非常麻煩的,但是國內(nèi)有很多廠商開發(fā)包含 Spark 組件的大數(shù)據(jù)平臺,為部署和運(yùn)維提供了很大的便利。
六、總結(jié)
綜上所述,Ignite 和 Spark 功能都很全面,已經(jīng)脫離了簡單開源技術(shù)組件的范圍,都成為了自成體系的開源大數(shù)據(jù)平臺。上面主要對 Ignite 和 Spark 的主要功能做了簡單的梳理對比,不一定全面,也沒有對其各自特有的功能進(jìn)行梳理。但經(jīng)過這么一些分析,還是可以得出這樣一個結(jié)論:兩者差別很大,定位不同,因此會有不同的適用領(lǐng)域。
Ignite
Ignite 以緩存為中心構(gòu)建大數(shù)據(jù)體系,底層存儲模型更偏向傳統(tǒng)關(guān)系型數(shù)據(jù)架構(gòu),上層為應(yīng)用開發(fā)的便利做了大量的工作,包括為各種常見語言和協(xié)議提供支持。中間核心層在緩存的基礎(chǔ)上不斷向外擴(kuò)展,功能日趨豐富強(qiáng)大。
Ignite 從定位上來說有兩個突出點(diǎn),一是可以獨(dú)立組網(wǎng),構(gòu)建獨(dú)立的大數(shù)據(jù)平臺,然后企業(yè)在其上開發(fā)全新的大數(shù)據(jù)應(yīng)用,包括緩存、計算、流數(shù)據(jù)處理、機(jī)器學(xué)習(xí)應(yīng)用等等。二是還可以與傳統(tǒng)應(yīng)用緊密整合,在不顛覆已有架構(gòu)的前提下,幫助用戶進(jìn)行傳統(tǒng)應(yīng)用的分布式架構(gòu)轉(zhuǎn)型。為運(yùn)行多年的復(fù)雜、運(yùn)行緩慢、技術(shù)架構(gòu)落后的業(yè)務(wù)系統(tǒng),提供加速能力的同時,引入眾多的先進(jìn)功能,大幅提升原有系統(tǒng)的能力從而延長已有架構(gòu)的壽命,產(chǎn)生更大的價值,保護(hù)客戶原有投資。
Ignite 的定位和架構(gòu),與 Hadoop 體系大數(shù)據(jù)組件有很大的不同,但是并不沖突,即使企業(yè)已經(jīng)部署了基于 Hadoop 技術(shù)體系的大數(shù)據(jù)平臺,那么也可以繼續(xù)引入 Ignite 作為補(bǔ)充。
Spark
Spark 以計算為中心構(gòu)建大數(shù)據(jù)體系,底層存儲對各種數(shù)據(jù)源進(jìn)行了抽象,總體上更偏向非結(jié)構(gòu)化的數(shù)據(jù),上層應(yīng)用支持多種語言,核心層基于 RDD 模型,然后進(jìn)行了大量的擴(kuò)展,支持了更多更高級的功能,比如 SparkSQL、Spark Streaming、SparkML 與 Spark GraphX 等。Spark 的核心優(yōu)勢是進(jìn)行多輪迭代式計算、交互式計算以及圖計算等。
Spark 是圍繞 RDD 構(gòu)建生態(tài),用戶可以以 Spark 為中心搭建大數(shù)據(jù)平臺,滿足大量數(shù)據(jù)的獲取、清洗、處理、加載、計算、存儲等需求,核心定位是解決大數(shù)據(jù)的分析問題。雖然 Spark 的計算能力也可以處理傳統(tǒng)的關(guān)系型數(shù)據(jù),但這并非 Spark 的強(qiáng)項,因此和傳統(tǒng)業(yè)務(wù)系統(tǒng)并沒有太多的交集。企業(yè)基于 Spark 搭建大數(shù)據(jù)平臺之后,其上的應(yīng)用基本需要全新開發(fā)。傳統(tǒng)的數(shù)據(jù)處理業(yè)務(wù),即使適合用 Spark 實現(xiàn),原有的業(yè)務(wù)邏輯也無法直接、簡單地移植進(jìn)入 Spark 技術(shù)堆棧。Spark 技術(shù)堆棧更適合用于處理傳統(tǒng)技術(shù)處理起來很麻煩、性能很差、數(shù)據(jù)量又很大的非結(jié)構(gòu)化數(shù)據(jù),Spark 適合對眾多系統(tǒng)的相關(guān)數(shù)據(jù)進(jìn)行整合,通過分析后能產(chǎn)生更大價值的業(yè)務(wù)場景。
聯(lián)系客服