1

私はhadoopに不慣れで、マハウトとは言いません。誰かがここを通過するのを手伝ってくれることを願っています.. 2日間試してきました..
すでにHadoopクラスターが実行されています.
Hadoop-2.0.0-alpha を使用しています。
mahout (ahout-distribution-0.7) と maven-2.2.1 (最新の maven-3.0.4 は動作しません) をインストールしました

今、私は mahout を実行して、それが何であるかを知りたいと思います。
「mahout」と入力すると、mahout で使用可能なオプション (アルゴリズム) のリストが出力されることを知りましたが、mahout と入力すると、Java 例外が発生するだけです。

$ [hadoop@localhost bin]$ mahout
MAHOUT_LOCAL is not set; adding HADOOP_CONF_DIR to classpath.
Running on hadoop, using /home/hadoop/hadoop/bin/hadoop and HADOOP_CONF_DIR=/home/hadoop/hadoop/conf
MAHOUT-JOB: /home/hadoop/mahout/examples/target/mahout-examples-0.7-job.jar
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.hadoop.util.ProgramDriver.driver([Ljava/lang/String;)V
    at org.apache.mahout.driver.MahoutDriver.main(MahoutDriver.java:123)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:208)

私がオンラインでグーグルで調べたところ、ほとんどの回答では、hadoop の下位バージョン、つまり hadoop-0.20 を使用する必要がありました。
ありがとうございました。

======== 新規編集 ========

Hadoop のバージョンを hadoop-1.0.3 に変更したところ、「mahout」と入力すると機能するようになりました (私の mahout は version7 です)。

しかし、例を実行しようとすると、同様のエラーで再び失敗します..

$ hadoop /home/hadoop/mahout/core/target/mahout-core-0.7-job.jar org.apache.mahout.cf.taste.hadoop.item.RecommenderJob -Dmapred.output.dir=output  -Dmapred.input.dir=input/prefs.txt  --usersFile input/users.txt --similarityClassname SIMILARITY_PEARSON_CORRELATION
Caused by: java.lang.ClassNotFoundException: .home.hadoop.mahout.core.target.mahout-core-0.7-job.jar
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: /home/hadoop/mahout/core/target/mahout-core-0.7-job.jar. Program will exit.

うーん..

4

2 に答える 2

1

はい、これを機能させるには、別のバージョンの Hadoop を使用する (またはソースから最新の Mahout をビルドする) 必要があるようです。NoSuchMethodErrorが発生したため、最初に行うことは、使用している Hadoop のディストリビューションに ProgramDriver が含まれているかどうかを確認することです。

さまざまなバージョンの API ドキュメントを見ると、v0.0.20.x にあることがわかりますが、新しいバージョンからは削除されています。

Mahout の JIRA を見ると、7 月 11 日にこれと同様の問題のバグが提出され、バージョン 0.8 で修正されていることがわかります。

アップデート:

コマンドには、hadoop コマンドの後にjarがあるべきではありませんか? 何かのようなもの:

$ hadoop jar /home/hadoop/mahout/core/target/mahout-core-0.7-job.jar など

于 2012-08-01T04:30:05.817 に答える
0

@BinaryNerdは正しいです。以下に詳述されているように、Mahout にはバグがあります。

Mahout 0.7 コマンド ラインでは、質問の最初の部分で詳述されているように、NoClassDef ProgramDriver エラーが発生します。これは 0.8 で修正される予定です。または、バグ レポートに記載されているようにビン/マハウトを編集してブレースの配置を修正することもできます。

Cloudera CDH 4.1.2 で mahout を使用して同じ問題に遭遇しました。ビン/マハウトのブレースを変更すると修正されました。

于 2012-11-16T14:56:46.127 に答える