MLlib(Machine Learning lib)是Spark对常用的机器学习算法的实现库,同时包括相关的测试和数据生成器。目前MLlib是Spark的四大子框架之一,对于其在机器学习方面的优势,我们大致总结了三点:
(1)由于Spark本身的设计初衷就是基于内存的计算框架,而这一点非常适合机器学习算法迭代计算的特点,因为机器学习的算法一般都需要经过多次迭代直到获得足够小的误差时才会停止执行,在这个过程中影响最大的就是I/O和CPU的消耗,与MapReduce这样的每次计算都需要读写磁盘的计算框架相比,当然基于内存计算的Spark无疑更有优势。
(2)MLlib的第二个优势就是它的易用性和部署方便。MLlib同样提供了对Scala语言、Java语言和Python语言的支持,方便用户使用自己擅长的语言进行Spark应用的开发。同时如果已经部署好Hadoop系统时,只需要部署Spark系统,MLlib就可以直接使用Hadoop生态系统的文件系统和数据库作为数据的输入源(如HDFS、Hbase等)。(www.xing528.com)
(3)MLlib的API是在Spark的RDD基础上建立起来的,作为Spark的子系统,它完全可以与Spark SQL、Spark Streaming、Spark GraphX这些同样基于RDD的Spark子系统进行无缝的结合。例如MLlib和Spark Streaming结合则可以构造机器学习在线训练模型,具体来说,通过Spark Streaming使数据不断地流进来,然后使用MLlib中的算法对流进来的数据进行训练,这对于一些复杂的实时流计算场景是非常有价值的。
MLlib目前支持四种常见的机器学习问题:分类、回归、聚类和协同过滤,同时也包括一个底层的梯度下降优化基础算法。在后面的小节,我们会具体分析四种常见的机器学习问题。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。