Apache Ignite vs Apache Spark

jopen 10年前發布 | 26K 次閱讀 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 (孵化中) 開發組 然后開始貢獻代碼吧!

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!