我用Spark写过两个机器学习算法,Naive Bayes classifier, Random forest, Apache Spark 的 RDD 是一个比Map-reduce和MPI更好用的分布式框架,表达力也很强。
看样子你目前是想直接使用golang 的 channel 实现分布式机器学习算法?这样的话,跟直接用MPI差不多,太底层,写的代码会很罗嗦。
方便程度:Spark > Hadoop > MPI, 代码简洁度:Spark > Hadoop > MPI,限制程度:MapReduce > Spark > MPI,MPI是最自由的,写起来也是最麻烦的,所以任何分布式计算框架,都似乎是在抽象和性能之间进行折中。
只有用更高层的抽象工具,写机器学习算法才会更简洁。
对了,Apache Tez,也是一个DAG计算框架(跟Spark很类似,本质上都是DAG),你也可以看看。还有MSRA的 Dryad,等等。我个人觉得Spark的RDD平衡的更好,也有非常成熟的实现,就是Spark本身。
关于用 golang 实现 Spark的RDD,有一个项目在此 Gopark,不过不太活跃,但是可以联系作者,一起做形成合力,照目前这种活跃度,项目完工遥遥无期。。。。