¿Dónde envía hadoop mapreduce framework mis declaraciones System.out.print ()? (stdout)



Answers

Otra forma es a través de la terminal:

1) Vaya a su directorio Hadoop_Installtion , luego a "logs / userlogs" .
2) Abra su directorio job_id .
3) Compruebe los directorios con _ m_ si desea la salida del asignador o _r_ si estás buscando reductores.

Ejemplo : en Hadoop-20.2.0:

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

Lo anterior significa:
Hadoop_Installation: ~ / hadoop-0.20.2
job_id: job_201209031127_0002
_m_: tarea de mapa, "número de mapa": _000000_

4) abre stdout si usaste "system.out.println" o stderr si usaste "system.err.append".

PD. otras versiones de hadoop pueden tener una jerarquía diferente a la vista, pero todas deben estar en $ Hadoop_Installtion / logs / userlogs.

Question

Quiero depurar una secuencia de comandos de mapreduce, y sin entrar en muchos problemas traté de poner algunas declaraciones impresas en mi programa. Pero no puedo encontrarlos en ninguno de los registros.




Para obtener su mensaje estándar y de registro en la consola, puede utilizar el marco de trabajo de Apache commons en su asignador y reductor.

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);
    }
}



Links