hadoop - tutorial - mapreduce java code
¿Dónde envía hadoop mapreduce framework mis declaraciones System.out.print()?(stdout) (4)
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.
En un clúster de Hadoop con yarn
, puede buscar los registros, incluido stdout, con:
yarn logs -applicationId application_1383601692319_0008
Por alguna razón, he encontrado que esto es más completo que lo que veo en la interfaz web. La interfaz web no listó la salida de System.out.println()
para mí.
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.
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);
}
}
En realidad, stdout solo muestra System.out.println()
de las clases que no son de mapas reducidos.
El System.out.println()
para las fases de mapeo y reducción se puede ver en los registros. La forma más fácil de acceder a los registros es
http://localhost:50030/jobtracker.jsp- > haga clic en el trabajo completado-> haga clic en el mapa o reduzca la tarea-> haga clic en el número de tarea-> registros de tareas-> registros de stdout.
Espero que esto ayude