Apache Ignite vs Apache Spark
出于我前面的貼子大贊了 Apache Ignite 的基于內存的文件系統和緩存功能,我將總結一下我將總結一下 Ignite 和 Spark 的主要區別。我發現這樣的問題被重復提出。這很容易回答,因此不必在網上“挖墳”。
顯而易見的一個不同就是 Ignite 是一個存于內存的計算系統,也就是把內存做為主要的存儲設備。Spark 則是在處理時使用內存。系統的索引更快,提取時間減少,避免了序列/反序列等優點,使前者這種內存優先的方法更快。
Ignite 的mapreduce 完全兼容 Hadoop MR API,因此大家可以簡單的復用現有的MR代碼,并讓其以30倍的速度運行。 我準備發布的 Apache Bigtop in-memory stack的例子,將展示出這感人的加速。
另外,不同于Spark的 streaming,Ignite 并不受RDD 大小的限制。換句話說,你不需要在處理RDD前指定他的長度,你可以確實做到真正的流式處理。就是說,Ignite處理一個流式內容的時候是沒有延遲的。
溢出是內存計算的通病:畢竟內存是有限的。在Spark中RDD是不可變長的,如果一個RDD創建的時候內存占用大于節點內存的1/2,那隨后 transformation跟generation的RDD很有可能占滿整個節點內存,然后導致溢出。除非新的RDD是在另一個節點產生的。Tachyon 也在努力試圖解決這個問題。
Ignite 沒有這種數據內存溢出的問題,因為他的緩存可以按照原子或事務的方式更新。無論如何,還是有可能溢出的:處理策略在這里有詳細解釋
-作為一個組件,Ignite也提供了first-class citizen的文件系統緩存層。注意,我已經定位過這個跟Ignite的不同,但是由于一些原因,我發的東西被他們刪除了。我想知道為什么?;)
-Ignite 使用 off-heap 內存,來避免 GC 中斷,灰常有效。
-Ignite 保證強一致性。
-Ignite 完全支持 SQL99 作為一個支持 ACID 事務的方式。
-Ignite 提供了內存SQL索引功能,可以避免全部數據掃描,直接導致非常顯著的性能改進(參見第一段)
-用Ignite的Java開發者不需要學習Scala Ropes這些,而且還鼓勵使用Groovy。為了文章的簡潔與凝練,對于后者我保留我的專業意見。
我會在閑散很長一段時間,但你可以考慮閱讀一下
http://www.infoq.com/articles/gridgain-apache-ignite ,
http://www.odbms.org/blog/2015/02/interview-nikita-ivanov/,
這個項目的作者之一Nikita Ivanov 對其它關鍵的區別有很好的反饋。另外, 另外如果你對這些內容感興趣 - 考慮加入 Apache Ignite (孵化中) 開發組 然后開始貢獻代碼吧!
本文地址:http://www.oschina.net/translate/apache-ignite-vs-apache-spark
原文地址:http://drcos.boudnik.org/2015/04/apache-ignite-vs-apache-spark.html