2016-03-16 204 views
18

目前我正在學習apache spark和apache ignite框架。它們之間的一些原則差異在本文中描述ignite vs spark 但是我意識到我仍然不明白他們的目的。我的意思是,哪些問題比點燃更容易出現問題,反之亦然?Apache Spark vs Apache Ignite

+2

的[點燃提案(https://wiki.apache.org/incubator/IgniteProposal)給出的它VS火花&Hadoop的一個很好的概述。 –

回答

23

我會說Spark是一款用於交互式分析的好產品,而Ignite更適合實時分析和高性能事務處理。 Ignite通過提供高效且可擴展的內存中鍵值存儲以及索引,查詢數據和運行計算的豐富功能來實現這一點。

Ignite的另一個常見用途是分佈式緩存,它通常用於提高與關係數據庫或任何其他數據源交互的應用程序的性能。

+5

感謝您的解釋,但是交互式分析和實時分析有什麼區別? – mfudi

+0

我遇到了這個問題,我也對這個問題感興趣。我認爲交互式分析通常意味着通過將數據帶入內存來多次分析穩定數據(所以火花非常適合於機器學習)。實時分析意味着實時可變數據,我認爲Ignite更適合基於其緩存。 @瓦倫丁,你覺得怎麼樣? – Tom

+2

嗯,可能OLAP和OLTP在這裏是更正確的術語。前者意味着運行比較少見的大型大多數只讀查詢,而後者則是小型查詢的高吞吐量。 Ignite最初是爲OLTP設計的,但目前也針對OLAP。 –

12

Apache Ignite是一款高性能,集成和分佈式內存平臺,用於實時計算和處理大規模數據集.Ignite是一個與數據源無關的平臺,可跨數據分發和緩存數據RAM中的多個服務器提供前所未有的處理速度和巨大的應用程序可擴展性。

Apache的火花(集羣計算架構)是一種快速,內存數據處理引擎與表現力的開發API,允許數據工作者有效地執行流,機器學習或需要對數據集快速迭代訪問SQL工作負載。 通過允許用戶程序將數據加載到羣集內存並反覆查詢,Spark非常適合高性能計算和機器學習算法。

某些概念上的差異:

火花不存儲數據時,它從其它存儲器加載用於處理數據,通常是基於磁盤的,然後當完成了加工丟棄該數據。另一方面,Ignite通過ACID事務和SQL查詢功能提供分佈式內存鍵值存儲(分佈式緩存或數據網格)。

Spark是對非事務,只讀數據(RDDS不支持就地突變),而點燃支持非事務性的(OLAP)有效載荷,以及完全符合ACID事務(OLTP)

Ignite完全支持可以「無數據」的純計算有效載荷(HPC/MPP)。 Spark基於RDD,僅適用於數據驅動的有效載荷。

結論:

點燃和火花都在內存計算解決方案,但它們針對不同的使用情況。

在許多情況下,它們被一起使用,以實現優異的結果:

的Ignite可以提供共享存儲,所以狀態可以從一個火花應用程序或作業到另一個傳遞。

的Ignite可以爲用戶提供索引SQL使SQL星火可以在1000倍,加速(火花不會索引數據)

當文件,而不是RDDS,Apache的點燃內存中的文件系統工作(胰島素樣生長因子)也可以共享Spark作業和應用程序之間的狀態

+0

謝謝你的回答。我仍然有點困惑。除了「數據網格」之外,apache ignite還提供了「計算網格」,它看起來與集羣計算框架非常相似。如果我已經使用apache ignite作爲數據存儲,我是否真的需要實時處理的火花? – Normal

+2

Ignite更適合構建聯機事務處理(OLTP)解決方案,而不適用於聯機分析處理(OLAP).Spark適用於Ignite將更好地用於數據管理和查詢的分析。 –

2

雖然Apache Spark和Apache Ignite利用內存計算的功能,但它們解決了不同的使用案例。 Spark進程但不存儲數據。它加載數據,處理它,然後丟棄它。另一方面,Ignite可用於處理數據,同時它還提供分佈式內存鍵值存儲和ACID兼容事務和SQL支持。 Spark也適用於非事務性只讀數據,而Ignite支持非事務性和事務性工作負載。最後,Apache Ignite還支持HPC和MPP用例的純粹計算有效負載,而Spark僅適用於數據驅動的有效負載。

Spark和Ignite可以很好地相互補充。 Ignite可以爲Spark提供共享存儲,以便狀態可以從一個Spark應用程序或作業傳遞到另一個。 Ignite也可用於提供分佈式SQL索引,可將Spark SQL加速至1,000倍。

尼基塔·伊萬諾夫:http://www.odbms.org/blog/2017/06/on-apache-ignite-apache-spark-and-mysql-interview-with-nikita-ivanov/

-2

雖然這兩個Apache的星火和Apache點燃利用內存計算的力量,他們的地址有所不同的使用情況,也很少「競爭」爲同一任務。某些概念上的差異:

Spark doesn’t store data, it loads data for processing from other storages, usually disk-based, and then discards the data when the processing is finished. Ignite, on the other hand, provides a distributed in-memory key-value store (distributed cache or data grid) with ACID transactions and SQL querying capabilities. 
Spark is for non-transactional, read-only data (RDDs don’t support in-place mutation), while Ignite supports both non-transactional (OLAP) payloads as well as fully ACID compliant transactions (OLTP) 
Ignite fully supports pure computational payloads (HPC/MPP) that can be 「dataless」. Spark is based on RDDs and works only on data-driven payloads.