Infinispan分布式流的性能

Performance of Infinispan Distributed Streams

Infinispan 8.2.x(最新版本)引入了分布式流(java 8)并贬低了 MapReduce 实现 [1]。这就提出了性能增强的问题。

是否有任何基准测试 运行 测试性能优势?据 Infinispan 团队称,内部基准测试显示了 Infinispan 分布式流的性能优势 [2]。但是,我还找不到结果或指向详细讨论的指针。

Infinispan 分布式流如何实现比 Infinispan MapReduce 更高的性能?它是否利用了 SIMD(单输入多数据)操作?

[1] https://docs.jboss.org/infinispan/8.2/apidocs/org/infinispan/distexec/mapreduce/MapReduceTask.html

[2] https://developer.jboss.org/thread/268188?start=0&tstart=0

感谢您的提醒,老实说,我们在博客上对此的性能提升有点松懈。我希望我们能在不久的将来得到一个。但是,我可以向您展示在基准测试中生成的图形中的图像 运行。 y 轴是 MB/s,x 轴是唯一单词的数量(在所有测试中,它都在进行简单的单词计数)。该博客应该显示更多详细信息。

这些测试都是 运行 使用雷达 [2] 顺便说一句。 Map Reduce 的测试驱动程序可以在 [3] 中找到,分布式流可以在 [4] 中找到。

但从图表中可以看出,Map/Reduce 的性能接近(比分布式流低约 15-30%),但是一旦中间结果的大小增加,Map/Reduce 就会下降,运行 内存不足。在这种情况下,Spark 的内存也是分布式流的两倍(所以我有点反对这些结果)。但是一旦我们有了博客,这应该更详细 post.

但是关于为什么分布式流更快,最重要的是我们在底层利用了 Java 8 个流,它提供了良好的 cpu 缓存命中率和使用分叉加入池。 Map/Reduce 有很多这样的优化,但缺少一些 :)

另外不要忘记 Distributed Streams 是完全可识别 rehash 的,当节点 enter/leaves 像 Map/Reduce 时,您不必担心 duplicate/lost 条目。您还可以在 [5].

阅读更多关于分布式流的信息

[2]https://github.com/radargun/radargun

[3] https://github.com/radargun/radargun/blob/master/extensions/mapreduce/src/main/java/org/radargun/stages/mapreduce/MapReduceStage.java

[4]https://github.com/radargun/radargun/blob/master/extensions/cache/src/main/java/org/radargun/stages/stream/StreamStage.java

[5] http://infinispan.org/docs/dev/user_guide/user_guide.html#streams