2012-08-01 2 views
1

Je suis nouveau à hadoop et pour ne pas dire mahout. J'espère que quelqu'un pourrait m'aider à passer à travers ici .. J'ai essayé pendant 2 jours ..
J'ai déjà un cluster hadoop en cours d'exécution. J'utilise Hadoop 2.0.0 alpha.
J'ai installé cornac (ahout-distribution 0,7) et maven-2.2.1 (dernière maven-3.0.4 ne marche pas travail)
mahout ne démarre pas. Quelque chose à faire avec la version compatible entre hadoop et mahout?

Maintenant, je voudrais courir juste cornac pour obtenir l'idée de ce qui est il.
J'ai appris qu'en tapant "mahout" il affichera une liste d'options (algorithmes) disponibles dans mahout, mais quand j'ai tapé mahout, cela me donne juste une exception Java.

$ [[email protected] 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) 

D'après ce que je googlé en ligne, la plupart des réponses me nécessaire d'utiliser la version inférieure de Hadoop, à savoir Hadoop 0,20, mon problème a maintenant quelque chose à voir avec ma version de Hadoop?
Merci.

======== ======== ÉDITÉ NOUVELLEMENT

je changé ma version de Hadoop à Hadoop 1.0.3 et maintenant il fonctionne quand je tapais "mahout" (mon cornac est version7)

Mais il échoue à nouveau avec l'erreur similaire, quand j'ai essayé d'exécuter un exemple ..

$ 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. 

Hmm ..

+0

Je pense que vous devez ajouter mahout-core-0.7-job.jar dans le dossier lib de hadoop – khan

Répondre

1

Oui, il ressemble à y Vous devez utiliser une version différente de Hadoop (ou créer le dernier Mahout à partir de la source) si vous voulez que cela fonctionne. Vous avez un NoSuchMethodError donc la première chose à faire est de vérifier si le ProgramDriver est dans la distribution de hadoop que vous utilisez. En regardant les docs de l'API pour les différentes versions, vous pouvez les voir dans v0.0.20.x mais elles ont été supprimées des versions plus récentes.

regardant le JIRA pour Mahout vous pouvez voir un bug a été soumis à un problème similaire à celui du 11 Juillet et a été corrigé dans la version 0.8 .

Mise à jour:

pas votre commande doit avoir pot après la commande Hadoop? Quelque chose comme:

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

+1

Ceci n'est pas lié au problème que vous avez mentionné bien qu'il semble assez proche. Ici, c'est un 'NoSuchMethodError' qui est provoqué par une incompatibilité de version, comme vous l'avez dit. –

+0

Nerd binaire, merci! J'ai changé ma version de hadoop en hadoop-1.0.3 avec mahout (mahout-distribution-0.7), cette fois je pourrais faire fonctionner le mahout :) Mais ... ça échoue quand je cours l'exemple ... – user1561806

+0

i ai édité les questions. – user1561806

0

@BinaryNerd a raison. Il y a un bogue dans Mahout comme indiqué dans:

ligne de commande Mahout 0.7 donne l'erreur NoClassDef ProgramDriver comme indiqué dans la première partie de votre question. Ceci sera corrigé dans 0.8 ou vous pouvez éditer votre bin/mahout comme détaillé dans le rapport de bogue pour fixer l'emplacement de l'accolade.

J'ai rencontré le même problème en utilisant mahout sous Cloudera CDH 4.1.2. Changer l'accolade dans ma poubelle/mahout l'a réparé.

Questions connexes