Java.lang.NoClassDefFoundError: esecuzione dell'esempio Mahout su un cluster hadoop


Sto seguendo il tutorial Mahout In Action per kmeans clustring, uso lo stesso codice trovato qui: con lo stesso pom.xml anche. Sulla mia macchina locale usando eclipse ogni cosa funziona bene, quindi costruisco il file jar (clustering-0.0.1-SNAPSHOT.jar) e portarlo al cluster (Hortonworks 2.3) quando si tenta di eseguirlo utilizzando: hadoop jar clustering-0.0.1-SNAPSHOT.jar com.digimarket.clustering.App (ho chiamato il mio progetto in modo diverso) Ottengo questo errore:

Java.lang.NoClassDefFoundError: org / apache / mahout / common / distance / DistanceMeasure

So che è un problema di dipendenza, ho trovato domande poste dagli utenti che avevano questo problema prima ma non riuscivo a capire come lo hanno risolto. qui e qui

Questo è il contenuto della directory mahout nel mio cluster:

ls /usr/hdp/2.3.4.0-3485/mahout/
bin
conf
doc
lib
mahout-examples-0.9.0.2.3.4.0-3485.jar
mahout-examples-0.9.0.2.3.4.0-3485-job.jar
mahout-integration-0.9.0.2.3.4.0-3485.jar
mahout-math-0.9.0.2.3.4.0-3485.jar
mahout-mrlegacy-0.9.0.2.3.4.0-3485.jar
mahout-mrlegacy-0.9.0.2.3.4.0-3485-job.jar

Grazie.

Author: Community, 2016-03-03

1 answers

Sembra che tu abbia una dipendenza che non è disponibile per il tuo codice sul tuo cluster.

Sulla base del pom.xml da quel progetto dovresti usare:

<properties>
  <mahout.version>0.5</mahout.version>
  <mahout.groupid>org.apache.mahout</mahout.groupid>
</properties>
...
<dependencies>
  <dependency>
    <groupId>${mahout.groupid}</groupId>
    <artifactId>mahout-core</artifactId>
    <version>${mahout.version}</version>
  </dependency>
  ...
</dependencies>

La classe org.Apache.mahout.comune.distanza.DistanceMeasure è incluso nel mahout-core-0.*.jar Ho mahout-core-0.7.vaso e la classe è presente in là.

inserisci qui la descrizione dell'immagine

Puoi scaricare quel jar e includerlo con il flag-libjars o puoi metterlo sul classpath hadoop.

 0
Author: Jeremy, 2016-03-28 20:34:31