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 回答