如何为hadoop 2.0编译/使用mahout?

时间:2013-09-12 15:02:05

标签: hadoop mahout mahout-recommender

最新版本mahout 0.9仅基于hadoop 1.x构建。 (mvn clean install) 如何为hadoop 2.0.x编译mahout?

因为当我运行命令时:

  

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

我总是收到错误消息

  

IncompatibleClassChangeError:找到接口org.apache.hadoop.mapreduce.JobContext,但是预期了类。

谢谢!

3 个答案:

答案 0 :(得分: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运行的官方文物(即使它是快照),我也很感激。

答案 1 :(得分: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"

答案 2 :(得分:0)

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

在此处查看代码https://github.com/apache/mahout并使用以下方法重新编译:

mvn clean package -Dhadoop2.version=2.2.0

试试看是否有效。