首页 > 代码库 > hadoop运行mahout问题解决方法

hadoop运行mahout问题解决方法

 问题1:

  1. java.lang.IncompatibleClassChangeError:Found interface org.apache.hadoop.mapreduce.JobContext, but class was expectedat 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:73)at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)

     

hadoop还不能支持hadoop1
 

 问题2:

  1. [root@crxy170 ~]# mahout hadoop jar jar.jar cmd.client.app.ClientAPPMAHOUT_LOCAL is not set; adding HADOOP_CONF_DIR to classpath.Running on hadoop, using /usr/lib/hadoop/bin/hadoop and HADOOP_CONF_DIR=/etc/hadoop/confSLF4J:Class path contains multiple SLF4J bindings.SLF4J:Found binding in[jar:file:/usr/lib/zookeeper/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]SLF4J:Found binding in[jar:file:/usr/local/hbase-0.98.8-hadoop2/lib/slf4j-log4j12-1.6.4.jar!/org/slf4j/impl/StaticLoggerBinder.class]SLF4J:Found binding in[jar:file:/usr/local/mahout0.9/mahout-core-0.9-job.jar!/org/slf4j/impl/StaticLoggerBinder.class]SLF4J:See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.SLF4J:Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]14/12/0600:10:32 INFO common.AbstractJob:Command line arguments:{--booleanData=http://www.mamicode.com/[true],--endPhase=[2147483647],--input=[hdfs://192.168.1.170:8020/user/root/userCF],--maxPrefsInItemSimilarity=[500],--maxPrefsPerUser=[10],--maxSimilaritiesPerItem=[100],--minPrefsPerUser=[1],--numRecommendations=[10],--output=[hdfs://192.168.1.170:8020/user/root/userCF/result/],--similarityClassname=[org.apache.mahout.math.hadoop.similarity.cooccurrence.measures.EuclideanDistanceSimilarity],--startPhase=[0],--tempDir=[hdfs://192.168.1.170:8020/tmp/1417795832292]}>

      

http://qnalist.com/questions/4884816/how-to-execute-recommenderjob-without-preference-value

这里有人是这样解决的:数据文件中字段的分割原来是空格,改为逗号。我用的数据文件本来就是逗号。还是报这个错误。

 

 

解决方法:

Apache hadoop

设置方法参考: hadoop2.2+mahout0.9实战 - 推酷 http://www.tuicool.com/articles/ryU7Ff

cdh

版本:5.1.3 经验感觉,cdh和Apache的hadoop在使用的时候,同样的技术在使用的时候经常不同。mahout也该用cloudera自己的。

 

在centos中安装mahout:sudo yum install mahout

 

是cloudera官网提供的

 

vi /etc/hadoop/conf/hadoop-env.sh
在HADOOP_CLASSPATH后添加:/usr/lib/mahout/*:/usr/lib/mahout/lib/*
 
现在可以运行了:
mahout hadoop jar jar.jar  cmd.client.app.ClientAPP

或者hadoop jar jar.jar  cmd.client.app.ClientAPP都能运行

 
 
 
 
 
 
 
 
 
 
 
 
 
 



 



hadoop运行mahout问题解决方法