In che modo hadoop mapreduce framework invia le mie istruzioni System.out.print ()? (stdout)

Voglio eseguire il debug di uno script di mapreduce e senza entrare nei guai ho provato a inserire alcune dichiarazioni di stampa nel mio programma. Ma non riesco a trovarli in nessuno dei registri.

In realtà stdout mostra solo System.out.println() delle classi di riduzione non mappa .

Il System.out.println() per mappare e ridurre le fasi può essere visto nei registri. Il modo più semplice per accedere ai registri è

http: // localhost: 50030 / jobtracker.jsp- > fai clic sul lavoro completato-> fai clic su mappa o riduci attività-> fai clic su tasknumber-> registri attività-> log stdout.

Spero che questo ti aiuti

Un altro modo è attraverso il terminale:

1) Vai nella tua directory Hadoop_Installtion , quindi in “logs / userlogs” .
2) Apri la tua directory job_id .
3) Controllare le directory con _ m_ se si desidera l’output del mapper o _r_ se stai cercando riduttori.

Esempio : in Hadoop-20.2.0:

 > ls ~ / hadoop-0.20.2 / logs / userlogs / attempt_201209031127_0002_m_000000_0 /
 log.index stderr stdout syslog

Quanto sopra significa:
Hadoop_Installation: ~ / hadoop-0.20.2
job_id: job_201209031127_0002
_m_: attività mappa, “numero mappa”: _000000_

4) apri stdout se hai usato “system.out.println” o stderr se hai usato “system.err.append”.

PS. altre versioni di hadoop potrebbero avere una diversa gerarchia di vista, ma dovrebbero essere tutte sotto $ Hadoop_Installtion / logs / userlogs.

Su un cluster Hadoop con yarn , puoi recuperare i log, incluso lo stdout, con:

 yarn logs -applicationId application_1383601692319_0008 

Per qualche ragione, ho trovato che questo è più completo di quello che vedo nell’interfaccia web. L’interfaccia web non ha elencato l’output di System.out.println() per me.

per ottenere il tuo stdout e il messaggio di log sulla console puoi usare il framework di logging di apache commons nel tuo mapper e riduttore.

 public class MyMapper extends Mapper<..,...,..,...> { public static final Log log = LogFactory.getLog(MyMapper.class) public void map() throws Exception{ // Log to stdout file System.out.println("Map key "+ key); //log to the syslog file log.info("Map key "+ key); if(log.isDebugEanbled()){ log.debug("Map key "+ key); } context.write(key,value); } }