nifi - spark in hadoop
DepuraciĆ³n de aplicaciones hadoop (5)
Intenté imprimir valores usando System.out.println (), pero no aparecerán en la consola. ¿Cómo imprimo los valores en una aplicación de mapa / reducción para fines de depuración usando Hadoop?
Gracias, Deepak.
La página a la que señala @SquareCog es una muy buena fuente de información para depurar un trabajo de MapReduce una vez que lo está ejecutando en una nube.
Antes de llegar a ese punto, debería considerar la posibilidad de escribir pruebas unitarias para sus correlacionadores y reductores, para que pueda verificar que la lógica básica funciona. Si le interesan las pruebas unitarias para probar su mapa y reducir la lógica, consulte mrunit , que funciona de manera similar a JUnit.
Las líneas impresas usando System.out.println y System.err.println van a los registros que Hadoop escribe por trabajo. Puede verlos usando la interfaz de usuario web haciendo clic en las tareas individuales.
Vea esta publicación de Cloudera en el blog para obtener muchos consejos sobre cómo probar y depurar trabajos de Hadoop: http://www.cloudera.com/blog/2009/07/advice-on-qa-testing-your-mapreduce-jobs/
Si usa MRUnit & ApprovalTests, es muy fácil imprimir el proceso de un trabajo de reducción de mapa. Hay un video aquí: http://t.co/leExFVrf
Por ejemplo, el código
HadoopApprovals.verifyMapReduce(new WordCountMapper(),
new WordCountReducer(), 0, "cat cat dog");
Producirá la salida:
[cat cat dog]
-> maps via WordCountMapper to ->
(cat, 1)
(cat, 1)
(dog, 1)
-> reduces via WordCountReducer to ->
(cat, 2)
(dog, 1)
System.out.println no se dirige al terminal sino que se escribe en los archivos de registro. Los archivos de registro están ubicados en su directorio Hadoop de forma predeterminada. De modo que puede escribir en la terminal cat /hadoop-homedirectory/logs/userlogs/jobID/attemptID/stdout
También puede acceder a través de la interfaz web. Escriba ip: 50070 / logs / userlogs.
Me gustaría agregar que también puede usar Counters
Hadoop JavaDoc para la depuración. Por ejemplo, si desea verificar, con qué frecuencia se pasa una determinada línea de su programa.