【发布时间】:2016-01-14 02:49:14
【问题描述】:
是否可以在不依赖 Hadoop 的情况下使用 Apache mahout。
我想在单台计算机上使用 mahout 算法,只在我的 Java 项目中包含 mahout 库,但我根本不想使用 hadoop,因为无论如何我都将在单个节点上运行。
这可能吗?
【问题讨论】:
标签: java hadoop machine-learning dependency-management mahout
是否可以在不依赖 Hadoop 的情况下使用 Apache mahout。
我想在单台计算机上使用 mahout 算法,只在我的 Java 项目中包含 mahout 库,但我根本不想使用 hadoop,因为无论如何我都将在单个节点上运行。
这可能吗?
【问题讨论】:
标签: java hadoop machine-learning dependency-management mahout
是的。并非所有 Mahout 都依赖于 Hadoop,尽管很多都依赖于 Hadoop。如果你使用一个依赖于 Hadoop 的部分,当然你需要 Hadoop。但例如有一个不使用 Hadoop 的大量推荐引擎代码库。
您可以在 Java 程序中嵌入本地 Hadoop 集群/工作器。
【讨论】:
当然,是的。在Mahout Recommender First-Timer FAQ 中,他们建议不要从基于 Hadoop 的实现开始(除非您知道您将相对较快地扩展到超过 1 亿用户偏好)。
您可以相对轻松地以纯 Java 方式使用 Recommender interface 的实现。或者在您选择的 servlet 中放置一个。
从技术上讲,Mahout 具有对 Hadoop 的 Maven 依赖项。但是您可以轻松地使用没有 Hadoop JAR 的推荐器。这在 Mahout in Action 的前几章中有描述 - 您可以下载 sample source code 并查看它是如何完成的 - 查看文件 RecommenderIntro.java。
但是,如果您使用的是 Maven,则需要手动排除 Hadoop - 依赖项如下所示:
<dependency>
<groupId>org.apache.mahout</groupId>
<artifactId>mahout-core</artifactId>
<exclusions>
<exclusion>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-core</artifactId>
</exclusion>
</exclusions>
</dependency>
【讨论】: