如何在mac上安装apache mahout?

时间:2013-10-16 20:23:18

标签: java maven hadoop mahout

我是Mahout的新手。我想安装它并尝试一下。到目前为止,我在Mac上安装并配置了Maven3和Java 1.6。我的问题是:

Do I have to install Hadoop firstly before installing Mahout? 

一些教程包括安装Hadoop和一些不让我困惑的教程。我知道Mahout是建立在Hadoop之上的。但并非所有的Mahout都依赖于Hadoop。

有人可以提供有关安装的一些有用的详细资源吗?

3 个答案:

答案 0 :(得分:1)

http://chimpler.wordpress.com/2013/02/20/playing-with-the-mahout-recommendation-engine-on-a-hadoop-cluster/

http://chimpler.wordpress.com/2013/03/13/using-the-mahout-naive-bayes-classifier-to-automatically-classify-twitter-messages/

这两个链接帮助我在OSX上启动并运行。使用带有mahout的hadoop并不是绝对必要的,但是如果你计划在可扩展的系统中使用它,那么几乎可以肯定的是,如果你想要在两者中获得经验那么有用......

答案 1 :(得分:1)

现在又回答了这个问题两年后,我终于得到了一个项目相似性命令,在经过大量诅咒和一些血液泄漏之后在Mac上运行...希望这能节省一些时间和某些人苦难。除了我的同事!你的弱点让我感到厌恶!总之...

首先是"我需要$ FINICKY_BIG_DATA_PLATFORM"问题,见:

http://mahout.apache.org/users/basics/algorithms.html

Hadoop和/或spark并不是硬性要求,有些算法在一台机器上运行。但是,您可能感兴趣的算法可能只在hadoop和/或spark上运行。有关建议的文档也非常强烈地指导您运行基于spark的算法。他们还鼓励您使用黑盒命令行命令,这些命令可以在单机和spark版本之间具有不同的参数(例如,项目相似性)。所以你不需要它,但你可能仍然需要它。

我尝试了brewo的hadoop,apache-spark和mahout。如果您使用绝对最新版本(mahout 0.11.0,apache-spark 1.4.1,hadoop 2.7.1),您可能会遇到以下问题:

  • "收到错误找不到Spark类路径。是' SPARK_HOME'组? "要解决此问题,您不仅需要设置该环境变量(我的设置为" /usr/local/Cellar/apache-spark/1.4.1/libexec"),您还需要显然现在弃用了$ {SPARK_HOME} / bin /中的compute-classpath.sh脚本。我有一个方便的1.2.0火花安装,所以我从那里拿了一个。

  • Bonus gotcha,在1.2.0安装中有两个compute-classpath.sh脚本,一个只是一个一行调用另一个。如果你复制真实的"你可能会更高兴。一,所以少用它来检查。

  • " java.lang.UnsatisfiedLinkError:java.library.path中没有snappyjava"要解决此问题,Internet会告诉您获取libsnappyjava.jnilib的副本,将其放在/ usr / lib / java中并将其重命名为libsnappyjava.dylib。我做过" brew install snappy,"它安装了1.1.3版本并包含了名为libsnappy.dylib和libsnappy.jnilib的符号链接。请注意,这些只是符号链接,并且名称不是很正确...所以在复制和重命名主lib文件后,我至少得到了一个新的错误,这将我们带到......

  • "线程" main"中的例外情况java.lang.UnsatisfiedLinkError:org.xerial.snappy.SnappyNative.maxCompressedLength(I)I"互联网不太有建议。我确实看到一篇帖子说版本1.0.xxx没有任何魔法小马代码,但版本1.1.1.3没有。我去了http://central.maven.org/maven2/org/xerial/snappy/snappy-java/,下载了snappy-java-1.1.1.3.jar并将其原样放入/ usr / lib / java中,没有更改名称。这使得snappy错误消失了,我可以运行一个" mahout spark-itemsimilarity"命令完成,YMMV,此建议按原样提供,不提供担保。

  • 请注意,导致snappy错误的绝望可能会让你下载spark .tgz并从头开始构建它。构建过程将花费你生命中约2个小时的时间,你永远不会回来,最后你仍会得到快速的错误。最终,我可以使用这个手工打造的版本运行与brew安装版本相同的命令,snappy jar最终成为主要的东西。

答案 2 :(得分:0)

你根本不需要hadoop来尝试mahout。下面是一个示例代码,它将模型作为文件的输入,并打印推荐。

package com.ml.recommend;

import java.io.File;
import java.io.IOException;
import java.util.List;

import org.apache.mahout.cf.taste.common.TasteException;
import org.apache.mahout.cf.taste.impl.model.file.FileDataModel;
import org.apache.mahout.cf.taste.impl.neighborhood.NearestNUserNeighborhood;
import org.apache.mahout.cf.taste.impl.recommender.CachingRecommender;
import org.apache.mahout.cf.taste.impl.recommender.GenericUserBasedRecommender;
import org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity;
import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood;
import org.apache.mahout.cf.taste.recommender.RecommendedItem;
import org.apache.mahout.cf.taste.recommender.Recommender;
import org.apache.mahout.cf.taste.similarity.UserSimilarity;

public class App {

        public static void main(String[] args) throws IOException, TasteException {

                DataModel model = new FileDataModel(new File("data.txt"));
                UserSimilarity userSimilarity = new PearsonCorrelationSimilarity(model);

                UserNeighborhood neighborhood = new NearestNUserNeighborhood(3,
                                userSimilarity, model);

                Recommender recommender = new GenericUserBasedRecommender(model,
                                neighborhood, userSimilarity);

                Recommender cachingRecommender = new CachingRecommender(recommender);

                List<RecommendedItem> recommendations = cachingRecommender.recommend(
                                1000000000000006075L, 10);

                System.out.println(recommendations);

        }

}