【问题标题】:Hadoop 2.2.0 is compatible with Mahout 0.8?Hadoop 2.2.0 与 Mahout 0.8 兼容吗?
【发布时间】:2014-01-21 14:31:35
【问题描述】:

我有运行 mahout 0.8 的 hadoop 集群版本 2.2.0,它兼容吗?因为每当我运行这个命令时:

bin/mahout recommenditembased --input mydata.dat --usersFile user.dat --numRecommendations 2 --output output/ --similarityClassname SIMILARITY_PEARSON_CORRELATION

给我这个错误:

Exception in thread "main" java.lang.IncompatibleClassChangeError: Found interface org.apache.hadoop.mapreduce.JobContext, but class was expected
at org.apache.mahout.common.HadoopUtil.getCustomJobName(HadoopUtil.java:174)
at org.apache.mahout.common.AbstractJob.prepareJob(AbstractJob.java:614)
at org.apache.mahout.cf.taste.hadoop.preparation.PreparePreferenceMatrixJob.run(PreparePreferenceMatrixJob.java:75)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.mahout.cf.taste.hadoop.item.RecommenderJob.run(RecommenderJob.java:158)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.mahout.cf.taste.hadoop.item.RecommenderJob.main(RecommenderJob.java:312)
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:622)
at org.apache.hadoop.util.ProgramDriver$ProgramDescription.invoke(ProgramDriver.java:72)
at org.apache.hadoop.util.ProgramDriver.run(ProgramDriver.java:144)
at org.apache.hadoop.util.ProgramDriver.driver(ProgramDriver.java:152)
at org.apache.mahout.driver.MahoutDriver.main(MahoutDriver.java:194)
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:622)
at org.apache.hadoop.util.RunJar.main(RunJar.java:212)

还是我错了?任何信息都会有所帮助。

【问题讨论】:

  • 我上次尝试针对 2.2 编译 0.8 时出现问题。你应该使用 1.2.x

标签: hadoop mahout


【解决方案1】:

【讨论】:

  • 很高兴知道,我也在apache邮件列表上搜索过,有些人也有这个问题。
【解决方案2】:

大约一个小时前,Mahout 正式在 master 分支中添加了对 Hadoop 2.x 的支持(参见 MAHOUT-1329

https://github.com/apache/mahout 处检查代码并使用以下代码重新编译:

mvn clean package -Dhadoop2.version=2.2.0

试试看是否可行。

【讨论】:

  • 它在线程“main”java.lang.NoSuchMethodError 中给出错误异常:org.apache.hadoop.util.ProgramDriver.driver([Ljava/lang/String;)V at org.apache.mahout .driver.MahoutDriver.main(MahoutDriver.java:195) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl .java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 org.apache.hadoop.util.RunJar.main(RunJar.java:208)
  • @Imran 在尝试重新编译之前,您是否为 Mahout-1329 应用了补丁?如果您可以尝试使用 Mahout HEAD 运行,那就更好了。
  • 我刚刚使用maven目标重新编译了trunk的代码..如何应用补丁???
【解决方案3】:

您可以从githubhttps://github.com/apache/mahout获取源代码并运行以下命令

mvn -Dhadoop2.version=2.2.0 -DskipTests clean install

然后,你可以在distribution/target/找到发布包

【讨论】:

    猜你喜欢
    • 2013-03-18
    • 1970-01-01
    • 1970-01-01
    • 2012-07-29
    • 2014-02-16
    • 2023-03-03
    • 1970-01-01
    • 2012-09-02
    • 1970-01-01
    相关资源
    最近更新 更多