0

ローカル システムで mahout を実行しようとしていますが、「./bin/mahout」を実行すると、以下のエラーが発生します。私がやろうとしているのは、hadoop なしで mahout を実行し、20Newsgroup の例を試すことだけです。

コア、ディストリビューション、およびサンプルディレクトリで「mvn compile」と「mvn install -Dmaven.test.skip=true」を実行しました。他に何が欠けているのかわからない。システムで Hadoop を実行しなくても mahout を実行できることはわかっています。

誰かが助けてくれれば感謝します。

hadoop binary is not in PATH,HADOOP_HOME/bin,HADOOP_PREFIX/bin, running locally
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/Users/Aanchal/mahout-distribution-0.7/mahout-examples-0.7-job.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/Users/Aanchal/mahout-distribution-0.7/lib/slf4j-jcl-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/Users/Aanchal/mahout-distribution-0.7/lib/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/util/ProgramDriver
    at org.apache.mahout.driver.MahoutDriver.main(MahoutDriver.java:96)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.util.ProgramDriver
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
4

2 に答える 2

6

この行を追加

CLASSPATH=${CLASSPATH}:$MAHOUT_HOME/lib/hadoop/hadoop-core-0.20.204.0.jar;

mahout.sh/bat ファイルのセクションの最後まで

# add release dependencies to CLASSPATH
for f in $MAHOUT_HOME/lib/*.jar; do 
  CLASSPATH=${CLASSPATH}:$f; 
done
于 2012-12-08T12:21:58.610 に答える
0

この例外は、クラスがクラスパス上に見つからなかったことを示します。つまり、クラス定義をロードしようとしていますが、クラスを含むクラス/jar がクラスパスに存在しません。

PATH と HADOOP_HOME の構成を確認し、これらの変数を適宜更新してください。

于 2012-12-08T12:46:25.467 に答える