2013-04-09 17 views
5

Sto cercando di ottenere funzionalità di riduzione delle mappe con python usando mongo-hadoop. Hadoop funziona, lo streaming di hadoop sta funzionando con Python e l'adattatore mongo-hadoop sta funzionando. Tuttavia, gli esempi di streaming di mongo-hadoop con python non funzionano. Quando si tenta di eseguire l'esempio in streaming/examples/tesoreria ottengo il seguente errore:Hadoop streaming a python utilizzando mongo-hadoop

[email protected]: ~/git/mongo-hadoop/streaming$ hadoop jar target/mongo-hadoop-streaming-assembly-1.0.1.jar -mapper examples/treasury/mapper.py -reducer examples/treasury/reducer.py -inputformat com.mongodb.hadoop.mapred.MongoInputFormat -outputformat com.mongodb.hadoop.mapred.MongoOutputFormat -inputURI mongodb://127.0.0.1/mongo_hadoop.yield_historical.in -outputURI mongodb://127.0.0.1/mongo_hadoop.yield_historical.streaming.out

13/04/09 11:54:34 INFO streaming.MongoStreamJob: Running 

13/04/09 11:54:34 INFO streaming.MongoStreamJob: Init 

13/04/09 11:54:34 INFO streaming.MongoStreamJob: Process Args 

13/04/09 11:54:34 INFO streaming.StreamJobPatch: Setup Options' 

13/04/09 11:54:34 INFO streaming.StreamJobPatch: PreProcess Args 

13/04/09 11:54:34 INFO streaming.StreamJobPatch: Parse Options 

13/04/09 11:54:34 INFO streaming.StreamJobPatch: Arg: '-mapper' 

13/04/09 11:54:34 INFO streaming.StreamJobPatch: Arg: 'examples/treasury/mapper.py' 

13/04/09 11:54:34 INFO streaming.StreamJobPatch: Arg: '-reducer' 

13/04/09 11:54:34 INFO streaming.StreamJobPatch: Arg: 'examples/treasury/reducer.py' 

13/04/09 11:54:34 INFO streaming.StreamJobPatch: Arg: '-inputformat' 

13/04/09 11:54:34 INFO streaming.StreamJobPatch: Arg: 'com.mongodb.hadoop.mapred.MongoInputFormat' 

13/04/09 11:54:34 INFO streaming.StreamJobPatch: Arg: '-outputformat' 

13/04/09 11:54:34 INFO streaming.StreamJobPatch: Arg: 'com.mongodb.hadoop.mapred.MongoOutputFormat' 

13/04/09 11:54:34 INFO streaming.StreamJobPatch: Arg: '-inputURI' 

13/04/09 11:54:34 INFO streaming.StreamJobPatch: Arg: 'mongodb://127.0.0.1/mongo_hadoop.yield_historical.in' 

13/04/09 11:54:34 INFO streaming.StreamJobPatch: Arg: '-outputURI' 

13/04/09 11:54:34 INFO streaming.StreamJobPatch: Arg: 'mongodb://127.0.0.1/mongo_hadoop.yield_historical.streaming.out' 

13/04/09 11:54:34 INFO streaming.StreamJobPatch: Add InputSpecs 

13/04/09 11:54:34 INFO streaming.StreamJobPatch: Setup output_ 

13/04/09 11:54:34 INFO streaming.StreamJobPatch: Post Process Args 

13/04/09 11:54:34 INFO streaming.MongoStreamJob: Args processed. 

13/04/09 11:54:36 INFO io.MongoIdentifierResolver: Resolving: bson 

13/04/09 11:54:36 INFO io.MongoIdentifierResolver: Resolving: bson 

13/04/09 11:54:36 INFO io.MongoIdentifierResolver: Resolving: bson 

13/04/09 11:54:36 INFO io.MongoIdentifierResolver: Resolving: bson 

**Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/mapreduce/filecache/DistributedCache** 
    at org.apache.hadoop.streaming.StreamJob.setJobConf(StreamJob.java:959) 
    at com.mongodb.hadoop.streaming.MongoStreamJob.run(MongoStreamJob.java:36) 
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70) 
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84) 
    at com.mongodb.hadoop.streaming.MongoStreamJob.main(MongoStreamJob.java:63) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.hadoop.util.RunJar.main(RunJar.java:208) 
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.mapreduce.filecache.DistributedCache 
    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 java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
    ... 10 more 

Se qualcuno potesse fare luce sarebbe di grande aiuto.

Informazione completa:

Per quanto mi riguarda posso dire che mi serviva per ottenere i seguenti quattro cose su cui lavorare:

  1. Installare e prova Hadoop
  2. Installare e prova Hadoop streaming con pitone
  3. Installare e testare mongo-hadoop
  4. Installare e testare streaming mongo-hadoop con python

Quindi, in breve, ho tutto funzionante fino al quarto passaggio. Uso (https://github.com/danielpoe/cloudera) ho Cloudera 4 installato

  1. Utilizzando cuoco ricetta Cloudera 4 è stato installato ed è attivo e funzionante e testato
  2. Utilizzando Michael nolls tutorial blog, Hadoop testato streaming con pitone con successo
  3. Utilizzando i documenti di mongodb.org è stato possibile eseguire sia treasury che ufo (build cdh4 in build.sbt)
  4. Hanno scaricato 1,5 ore di dati di Twitter utilizzando il readme per l'esempio di twitter in streaming/esempi e anche provato il esempio di tesoreria.
+0

risolto: per farlo funzionare avevamo bisogno di installare Cloudera 4. quindi installare l'adattatore mongo-Hadoop utilizzando la versione cdh4 Quindi creare l'unità mongo-Hadoop-streaming utilizzando la versione CDH3 A questo punto, invece di seguire la istruzioni e installa pymongo-hadoop dal repository, la soluzione migliore 'sudo pip installa pymongo_hadoop' – Conor

risposta

0

Hai installato l'ultimo connettore pymongo_hadoop? Quali versioni dell'altro software stai utilizzando?

+0

Ciao Ross, grazie per la tua risposta. Era il connettore pymongo_hadoop che rappresentava il problema. L'avevamo risolto un po 'prima che tu ci desse il suggerimento. – Conor

Problemi correlati