首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Apache Mahout和Apache Spark的MLlib有什么不同?

Apache Mahout和Apache Spark的MLlib有什么不同?
EN

Stack Overflow用户
提问于 2014-05-07 15:30:14
回答 2查看 32.4K关注 0票数 56

考虑一个电子商务网站的包含1000万种产品的MySQL products数据库。

我正在尝试设置一个分类模块来对产品进行分类。我正在使用Apache Sqoop将数据从MySQL导入Hadoop。

我想在它上面使用Mahout作为一个机器学习框架来使用它的一个Classification algorithms,然后我遇到了MLlib提供的Spark

这两个frameworks?

  • Mainly,的区别是什么?
  • 各自的优势、缺点和局限性是什么?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-07 18:45:23

主要的区别将来自底层框架。在Mahout的情况下,它是Hadoop,而在MLib的情况下,它是MapReduce。更具体地说,从每个作业开销的差异

如果你的ML算法映射到单个MR作业-- main的区别将只是启动开销,Hadoop MR是几十秒,Spark是1秒。因此,在模型训练的情况下,这并不重要。

如果您的算法映射到多个作业,情况将有所不同。在这种情况下,我们在每次迭代的开销上都会有相同的差异,这可能会改变游戏规则。

假设我们需要100次迭代,每次需要5秒的集群CPU。

  • On Spark:需要100*5 + 100*1秒= 600秒。
  • On Hadoop: MR (Mahout)这将花费100*5+100*30 = 3500秒。

同时,Hadoop MR是比Spark更成熟的框架,如果你有大量的数据,稳定性是最重要的-我会认为Mahout是一个重要的替代方案。

票数 46
EN

Stack Overflow用户

发布于 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这样的快速计算引擎成为常态,大多数人都会在那里投资。

票数 42
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23511459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档