所以我最近开始学习Scala并且一直在使用图形作为我的项目来改进我的Scala,并且它进展顺利 - 我已经设法轻松地并行化了一些图形算法(受益于数据并行化)Scala 2.9对并行集合的惊人支持。
但是,我想更进一步,让它不仅在一台机器上而且在几台机器上并行化。 Scala是否提供任何干净的方式来执行此操作,就像它对并行集合一样,或者我是否必须等到我的Actors书中的章节/了解有关Akka的更多信息?
谢谢! -kstruct
答案 0 :(得分:11)
尝试创建distributed collections(目前项目被冻结)。
替代方案是Akka(最近得到了非常酷的补充:Akka Cluster),你已经提到的,或者是成熟的集群引擎,不 parallel集合在任何意义上都更像是在scala上分发集群,但可以某种方式用于您的任务 - 例如Scoobi用于Hadoop,Storm甚至Spark(具体而言,Bagel用于图形处理)。 还有Swarm构建在分隔的延续之上。 最后但并非最不重要的是Menthor - 作者声称它特别适合图形处理并使用Actors。
由于您的目标是使用图表,因此您也可以考虑查看最近由twitter开源的Cassovary。
Signal-collect是一个支持Akka的并行数据处理框架。
答案 1 :(得分:2)
你可以使用Akka(http://akka.io) - 它一直是Scala最先进和最强大的actor和并发框架,而新鲜出炉的版本2.0允许很好的透明actor remoting,{{ 3}}和hierarchies。进行并行计算的规范方法是创建与算法中存在并行部分一样多的actor,可选择将它们分布在多台机器上,将数据发送到进程然后收集结果(参见supervision)。