考虑一个电子商务网站的包含1000万种产品的MySQL products
数据库。
我正在尝试设置一个分类模块来对产品进行分类。我正在使用Apache Sqoop将数据从MySQL导入Hadoop。
我想在它上面使用Mahout作为一个机器学习框架来使用它的一个Classification algorithms,然后我遇到了MLlib提供的Spark
这两个frameworks?
发布于 2014-05-07 18:45:23
主要的区别将来自底层框架。在Mahout的情况下,它是Hadoop,而在MLib的情况下,它是MapReduce。更具体地说,从每个作业开销的差异
如果你的ML算法映射到单个MR作业-- main的区别将只是启动开销,Hadoop MR是几十秒,Spark是1秒。因此,在模型训练的情况下,这并不重要。
如果您的算法映射到多个作业,情况将有所不同。在这种情况下,我们在每次迭代的开销上都会有相同的差异,这可能会改变游戏规则。
假设我们需要100次迭代,每次需要5秒的集群CPU。
同时,Hadoop MR是比Spark更成熟的框架,如果你有大量的数据,稳定性是最重要的-我会认为Mahout是一个重要的替代方案。
发布于 2014-05-08 14:08:11
警告--主要编辑:
MLlib是在Spark上运行的高级算法的松散集合。这是Hadoop Mapreduce上过去仅有的Mahout。2014年,Mahout宣布将不再接受Hadoop Mapreduce代码,并完全将新的开发切换到Spark (其他引擎可能即将推出,如H2O)。
由此产生的最重要的东西是一个基于Scala的通用分布式优化线性代数引擎和环境,包括一个交互式Scala shell。也许最重要的词是“泛化”。因为它在Spark上运行,所以MLlib中的任何可用的东西都可以与Mahout-Spark的线性代数引擎一起使用。
如果你需要一个通用引擎,它可以做很多像R这样的工具所做的事情,但是在真正的大数据上,看看Mahout。如果您需要特定的算法,请查看每个算法,看看它们有什么。例如,Kmeans在MLlib中运行,但是如果你需要聚类A'A (一个在推荐器中使用的共现矩阵),你将需要它们,因为MLlib没有矩阵转置或A'A (实际上Mahout做了一个瘦优化的A'A,所以转置被优化了)。
Mahout还包括一些创新的recommender building blocks,它们提供了其他操作系统所没有的东西。
Mahout仍然有其较旧的Hadoop算法,但随着像Spark这样的快速计算引擎成为常态,大多数人都会在那里投资。
https://stackoverflow.com/questions/23511459
复制相似问题