2012-10-02 25 views
5

im cercando di costruire una mappa ridurre il lavoro.Come posso eseguire il debug della mappa di Hadoop ridurre

esegue fino alla fine ma presenta dati strani alla fine.

quando si tenta di eseguire il debug utilizzando system.out.println ("dati di debug") non viene visualizzato sullo schermo.

utilizzando l'API Java per produrre un file di log esterna, cercando di stampare su schermo utilizzando log.severe ("dati di log") o usando il metodo logger log4j log.info (log dei dati) non funzionerà o/

niente funziona l'unica volta che vedo i miei messaggi di debug è quando c'è un'eccezione nella mappa ridurre il lavoro.

come può essere risolto in modo che possa vedere i miei messaggi di debug su un file o sullo schermo?

+2

Uso println non è il debug. Questo è il tracciamento. – maba

+1

Forse non hai abbastanza spazio per la registrazione (http://stackoverflow.com/questions/4821134/hadoop-enable-logging)? Anche System.out.println() può essere reindirizzato –

risposta

3

This answer può aiutare. Hadoop acquisisce System.out per il proprio sistema di registrazione del tracciamento del lavoro.

+0

thx che sembra essere adeguato, speriamo che ora non riesca a capire il problema –

0

Sviluppo la mia mappa/riduci codice in Eclipse usando maven per creare il jar di runtime e gestire le dipendenze. Una volta che ho haoop installato e in esecuzione sulla mia macchina per supportare HDFS, posso eseguire e debuggare il mio codice in Eclipse. Ciò significa utilizzare i breakpoint e tutto il resto nella prospettiva di debug di Eclipse.

1

Poiché si stanno elaborando big data, la dimensione dei messaggi di traccia può essere enorme, quindi può causare un problema. E 'utile considerare alternative per la registrazione "System.out.println" stile:

  • utilizzare i contatori (here è un semplice esempio)
  • i registri di scrittura per HDFS utilizzando MultipleOutputs

La cosa migliore di Contatori e MultipleOutputs: puoi accedere a loro in modo programmabile, in caso di MultipleOutputs puoi anche eseguire map/ridurre l'attività per estrarre alcune statistiche dai log.

Un'altra alternativa al debug dell'ambiente di produzione è il test dell'unità, MiniMRCluster consente di testare la mappa riducendo i lavori durante i test unitari.

3

Si potrebbe provare Jumbune

Dal loro guida:

Debugger fornisce il livello di codice statistiche di flusso di controllo di esecuzione del lavoro MapReduce. L'utente può applicare le convalide regex o le classi di convalida definite dall'utente . In base alla convalida applicata, Flow Debugger controlla il flusso delle tuple dei dati di input in sostanza i dati di coppia per ogni mappatore e riduttore nel lavoro inviato.

Jumbune fornisce una vista tabella/grafico completa che mostra il flusso dei record di input attraverso il lavoro. Il flusso è visualizzato a livello di lavoro, livello MapReduce e livello di istanza. Chiavi/valori non corrispondenti rappresentano il numero di flusso imprevisto di dati chiave/valore attraverso il lavoro. Debugger trapani scorrimento nel codice di esaminare il flusso di dati per vari contatori come loop e if-condizioni, altrimenti-se, ecc

Problemi correlati