开源中国

我们不支持 IE 10 及以下版本浏览器

It appears you’re using an unsupported browser

为了获得更好的浏览体验,我们强烈建议您使用较新版本的 Chrome、 Firefox、 Safari 等,或者升级到最新版本的IE浏览器。 如果您使用的是 IE 11 或以上版本,请关闭“兼容性视图”。
Apache Ignite vs Apache Spark - 技术翻译 - 开源中国社区

Apache Ignite vs Apache Spark 【已翻译100%】

oschina 推荐于 3年前 (共 4 段, 翻译完成于 05-06) 评论 15
收藏  
44

出于我前面的贴子大赞了 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 也在努力试图解决这个问题。

Frank_mc
 翻译得不错哦!

Ignite 没有这种数据内存溢出的问题,因为他的缓存可以按照原子或事务的方式更新。无论如何,还是有可能溢出的:处理策略在这里有详细解释

-作为一个组件,Ignite也提供了first-class citizen的文件系统缓存层。注意,我已经定位过这个跟Ignite的不同,但是由于一些原因,我发的东西被他们删除了。我想知道为什么?;)

-Ignite 使用 off-heap 内存,来避免 GC 中断,灰常有效。

-Ignite 保证强一致性。

-Ignite 完全支持 SQL99 作为一个支持 ACID 事务的方式。

Frank_mc
 翻译得不错哦!

-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 (孵化中) 开发组 然后开始贡献代码吧!

Frank_mc
 翻译得不错哦!
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们
评论(15)
Ctrl/CMD+Enter

第一次翻译,发现想写清楚跟读懂区别还是挺大的,希望大家多多指点。最后一段作者用了rumbling,私以为是拼写错误,然后就按rambling翻的。
一浪更比一浪强?
测试
测试
测试
spark的升级版?
又出一牛逼的东西,spark都还没搞懂。
又出一牛逼的东西,hadoop都还没搞懂。
避免了序列/反序列等优点??It'scrazy!
这牛B的东西都得依赖于内存条
不用学scala了,但要学groovy...
1. apache ignite实际上是grid gain的开源版本,但是gridgain的社区版一直没有完全切换过去,仍然有专门人维护,这些人其实也是ignite的作者,实际上两个代码基线、输出都没有较大差别。
2. apache ignite神奇的地方在于它的集群可以支持1 billion的能力,很好奇它是如何做到的(可以看看gridgain的宣传地方)
3. gridgain还有ignite存在的问题在于其文档太差了,而且学习其API的章节很艰难晦涩。相比hazelcast它的社区还不够活跃(比较一下github中gridgain的工程项目就知道。
4 ignite比较牛的地方在于zero deployment、对于hadoop的集成支持,还有内置了offheap的实现,前面两个hazelcast不支持(可能3.6或更高版本会考虑的)然后就是它的transaction性能比较牛(可能hazelcast3.6会逐步赶上)
spark最好的地方是迭代计算,但这并不是说它就真的快到你可以把它变成数据仓库,相反,Ignite简单、原始、粗暴、零维护,给你的空间会大很多,如果你是Java背景的话。
想快,那就别用强大的API。spark的确可以做到单次秒级计算,但不能把加载数据和保存数据的时间算进去,更别提重复去做这些事情(5秒1次执行10000以上就变噩梦),因为存在GC Pause这样的问题,很多时候你需要让内存GC,CPU,I/O,迭代计算在一定程度上实现平衡,这太累人了。Ignite的思想其实就是把这些事情全部放到内存里去干,而且不用GC框架,这绝对是IT老妖精的做法,受正规框架教育的人不会这样思考问题的。
对我来说,ignite对开发语言的支持更加广泛,支持C++和.Net是ignite比Spark好用之处。
顶部