基于Spark的矩阵相乘
项目中我将先实现基于Spark的矩阵相乘功能。并行化思路将参照MapReduce下的实现方案并做一些优化修改。经过查阅文献,选取比较可行的MapReduce参考方案是HAMA项目。该项目是Apache基金会下的一个顶级开源项目,属于Hadoop生态圈中的一个重要项目。根据HAMA项目主页上的简介,HAMA项目的目的是提供“a general BSP framework on top of Hadoop”。因此HAMA项目的目标现在主要围绕着BSP框架展开。
但是HAMA项目在早期的目标远比此要宏大,其目的有些类似于Spark项目中的MLLib,只是其底层是基于Hadoop生态圈的。下面这张图是截取自2010年发表在IEEE CouldCom会议上的介绍HAMA的文章[1]中的图。在这篇论文中,作者着重介绍了HAMA是如何利用MapReduce框架实现矩阵乘法的。因为MapReduce是第一个在大规模集群上运行的不同于MPI的并行计算框架,对于基于RDD模型的Spark实现具有很强的参考价值,因此我们决定先参考HAMA的实现方式在Spark上试验性的尝试矩阵乘法算法的实现,然后观测一下性能和瓶颈等。