选择Akka还是Spark进行并行处理?

9
选择并行处理任务时,我通常使用Spark。阅读有关Akka的并行处理文章(如http://blog.knoldus.com/2011/09/19/power-of-parallel-processing-in-akka/),似乎使用Akka进行并行处理是在更低的级别上操作。与Spark相比,Spark抽象了用户所需的一些底层概念,如映射Reduce。Spark为分组和过滤数据提供了高级抽象。Akka是用于并行处理任务的竞争对手还是解决不同的问题?在做出决定之前,我应该考虑哪些因素?
2个回答

10

Spark实际上是建立在akka之上的(至少在撰写本文时是这样)。 :) (http://akka.io/community/ - 查看“使用akka的项目”)

话虽如此,Spark为你提供的主要价值在于你提到的那些抽象概念,大多数情况下(在我看来)是基于RDD的概念和对RDD的操作。因此,如果你的问题领域很好地适应了这个框架,那么可以使用Spark;否则,自己编写akka相关的代码。


由于“Spark是/曾经建立在Akka神话之上”的说法仍然存在,包括在一个非常相似的问题的SO答案中,让我链接到另一个关于Akka和Spark的SO答案:Spark从来没有“建立在Akka之上”,它只是用它来进行内部通信,甚至这也被放弃了,以便Akka集群可以更轻松地与Spark流进行通信。 - fnl

0

我的看法是,如果我们需要处理太多小消息(数百万),可以编写基于akka的应用程序。这应该比spark更快。请发表评论。

如果消息数据非常大,则无法使用(需要超过1个jvm)需要RDD。在第一种情况下,spark有一些额外的功能可能会增加开销。


这是对问题的回答吗? - Cleb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接