Ho provato a stampare i valori utilizzando System.out.println(), ma non appariranno sulla console. Come posso stampare i valori in una mappa/ridurre l'applicazione per il debugging usando Hadoop?Debug di applicazioni hadoop
Grazie, Deepak.
Ho provato a stampare i valori utilizzando System.out.println(), ma non appariranno sulla console. Come posso stampare i valori in una mappa/ridurre l'applicazione per il debugging usando Hadoop?Debug di applicazioni hadoop
Grazie, Deepak.
I punti pagina @SquareCog per è una buona fonte di informazioni sul debug di un lavoro MapReduce una volta che si esegue lo su una nuvola.
Prima di raggiungere questo punto, è consigliabile prendere in considerazione la scrittura di unit test per i propri mapper e riduttori, in modo da verificare che la logica di base funzioni. Se sei interessato a test unitari per testare la tua mappa e ridurre la logica, controlla mrunit, che funziona in modo simile a JUnit.
Umm la pagina che ho indicato parla di MRUnut :) Ma certo. – SquareCog
@SquareCog - Il mio male, ho dato per scontato che sapessi a quale pagina hai collegato. È una buona fonte di informazioni: +) –
Le righe stampate utilizzando System.out.println e System.err.println vanno ai registri scritti da Hadoop in base al lavoro. È possibile visualizzarli utilizzando l'interfaccia utente Web facendo clic su singole attività.
Vedi questo post del blog da Cloudera per un sacco di consigli sui test e debug di posti di lavoro Hadoop: http://www.cloudera.com/blog/2009/07/advice-on-qa-testing-your-mapreduce-jobs/
Vorrei aggiungere che è possibile utilizzare Counters
Hadoop JavaDoc anche per il debug. Per esempio. se si desidera verificare, con quale frequenza viene trasmessa una determinata riga del programma.
System.out.println non è diretto al terminale ma è scritto nei file di registro. I file di registro si trovano nella directory Hadoop per impostazione predefinita. Quindi puoi digitare il terminale cat /hadoop-homedirectory/logs/userlogs/jobID/attemptID/stdout
Puoi anche accedere al tuo tramite l'interfaccia web. Digita ip: 50070/logs/userlogs.
Se si utilizza MRUnit & ApprovalTests, è molto semplice stampare il processo di riduzione di una mappa. C'è un video su di esso qui: http://t.co/leExFVrf
Per esempio il codice
HadoopApprovals.verifyMapReduce(new WordCountMapper(),
new WordCountReducer(), 0, "cat cat dog");
produrrà l'output:
[cat cat dog]
-> maps via WordCountMapper to ->
(cat, 1)
(cat, 1)
(dog, 1)
-> reduces via WordCountReducer to ->
(cat, 2)
(dog, 1)
consultare qui https://stackoverflow.com/questions/23235343/debugging -hadoop-in-eclipse – Mash