4

The latest release mahout 0.9 is only built on hadoop 1.x. (mvn clean install) How can I compile mahout for hadoop 2.0.x?

Because When I was running the commands:

hadoop jar mahout-examples-0.9-SNAPSHOT-job.jar org.apache.mahout.cf.taste.hadoop.item.RecommenderJob -s SIMILARITY_COOCCURENCE -i test -o result

I always got the error message

IncompatibleClassChangeError: Found interface org.apache.hadoop.mapreduce.JobContext, but class was expected.

Thanks!

4

3 回答 3

1

编译 Mahout 以使用 2.x,因为它没有在与 Hadoop 2.x 兼容的包中发布:

mvn clean install -Dhadoop2 -Dhadoop2.version=2.2.0 -DskipTests=true

如果要在构建后确认引入了正确的依赖项,请从项目的根目录运行以下命令:

find . -name hadoop*.jar

上述命令生成的工件与 0.9 版本中的不同,因此您需要更新的不仅仅是版本号(似乎有一个新的 mahout-mrlegacy jar)。

话虽这么说,如果有人可以向我指出一个运行 2.x 的官方工件(即使它是一个快照),我将不胜感激。

于 2014-07-14T20:23:47.073 回答
0

您是否尝试在 pom.xml 中更改 hadoop 的版本?

<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-core</artifactId>                                                   
<version> 0.23.9</version> 

(请检查hadoop的版本。据我了解,0.23变成了2.0)

要尝试的另一件事是像这样直接运行 RecommenderJob:

bin/mahout recommenditembased \
   --input INPUT --output OUTPUT \
   --tempDir TEMP --similarityClassname SIMILARITY_LOGLIKELIHOOD

要运行它,您必须位于 mahout 文件夹的根目录中,并且需要设置以下环境变量:

export HADOOP_HOME=/path/to/hadoop/home
export HADOOP_COMMONS_HOME=/path/to/commons/home
export JAVA_HOME=/path/to/java/home
export PATH="$PATH:$HADOOP_HOME/bin"
于 2013-09-12T18:55:00.260 回答
0

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

在这里查看代码https://github.com/apache/mahout并使用以下命令重新编译:

mvn clean package -Dhadoop2.version=2.2.0

试试看是否有效。

于 2014-02-25T11:16:19.430 回答