mahout不会启动。与hadoop和mahout之间的兼容版本有什么关系?

时间:2012-08-01 02:23:28

标签: hadoop mahout

我是hadoop的新手而不是说mahout。我希望有人能协助我通过这里..已经尝试了2天..
我已经运行了一个hadoop集群。
我正在使用hadoop-2.0.0-alpha。
我安装了mahout(ahout-distribution-0.7)和maven-2.2.1(最新的maven-3.0.4无效)

现在我想运行mahout来了解它是什么。
我了解到,通过输入“mahout”,它将打印出mahout中可用的选项(算法)列表,但是当我输入mahout时,它只是给了我Java异常。

$ [hadoop@localhost bin]$ mahout
MAHOUT_LOCAL is not set; adding HADOOP_CONF_DIR to classpath.
Running on hadoop, using /home/hadoop/hadoop/bin/hadoop and HADOOP_CONF_DIR=/home/hadoop/hadoop/conf
MAHOUT-JOB: /home/hadoop/mahout/examples/target/mahout-examples-0.7-job.jar
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.hadoop.util.ProgramDriver.driver([Ljava/lang/String;)V
    at org.apache.mahout.driver.MahoutDriver.main(MahoutDriver.java:123)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:208)

从网上搜索,大多数答案要求我使用较低版本的hadoop,即hadoop-0.20,我的问题现在与我的hadoop版本有关吗?
谢谢。

========新编辑========

我将我的hadoop版本更改为hadoop-1.0.3,现在当我键入“mahout”(我的mahout是版本7)时它可以正常工作

但是当我试图运行一个例子时,它又出现了类似的错误..

$ hadoop /home/hadoop/mahout/core/target/mahout-core-0.7-job.jar org.apache.mahout.cf.taste.hadoop.item.RecommenderJob -Dmapred.output.dir=output  -Dmapred.input.dir=input/prefs.txt  --usersFile input/users.txt --similarityClassname SIMILARITY_PEARSON_CORRELATION
Caused by: java.lang.ClassNotFoundException: .home.hadoop.mahout.core.target.mahout-core-0.7-job.jar
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: /home/hadoop/mahout/core/target/mahout-core-0.7-job.jar. Program will exit.
嗯..

2 个答案:

答案 0 :(得分:1)

是的,如果您希望这样做,您似乎需要使用不同版本的Hadoop(或从源代码构建最新的Mahout)。你有一个 NoSuchMethodError 所以要做的第一件事就是检查 ProgramDriver 是否在你正在使用的hadoop发行版中。

查看各种版本的API文档,您可以看到它在v0.0.20.x中,但已从较新版本中删除。

查看适用于Mahout的JIRA,您可以看到7月11日针对类似问题提交了一个错误,并已在0.8版本中修复。

<强>更新

在hadoop命令之后你的命令不应该 jar 吗?类似的东西:

  

$ hadoop jar /home/hadoop/mahout/core/target/mahout-core-0.7-job.jar   等

答案 1 :(得分:0)

@BinaryNerd是对的。 Mahout中有一个错误详见:

Mahout 0.7命令行给出NoClassDef ProgramDriver错误,详见问题的第一部分。这将在0.8中修复,或者您可以编辑您的bin / mahout,如错误报告中所详述,以修复大括号位置。

我在Cloudera CDH 4.1.2下使用mahout遇到了同样的问题。更改我的bin / mahout中的大括号会修复它。