2012-10-02 27 views
5

Estoy tratando de construir un mapa de reducir el trabajo.¿Cómo puedo depurar el mapa de Hadoop? Reducir

se ejecuta hasta su finalización pero presenta datos extraños al final.

cuando intento depurarlo usando system.out.println ("datos de depuración") no se muestra en la pantalla.

uso de la API de Java para producir un archivo de registro externo, tratando de imprimir en la pantalla utilizando log.severe ("datos de registro") o utilizando el método registrador log4j log.info (datos de registro) no trabajará bien/

no funciona nada, la única vez que veo mis mensajes de depuración es cuando hay una excepción en el trabajo de reducción de mapa.

¿cómo se puede arreglar para que pueda ver mis mensajes de depuración en un archivo o en la pantalla?

+2

Usando println no está depurando. Eso es rastreo. – maba

+1

Tal vez no tiene suficiente logging (http://stackoverflow.com/questions/4821134/hadoop-enable-logging)? Incluso System.out.println() puede ser redirigido al –

Respuesta

3

This answer pueden ayudar. Hadoop captura System.out por su propio sistema de registro de seguimiento de trabajos.

+0

thx que parece ser adecuado, con suerte ahora no se puede resolver el problema –

0

Desarrollo mi código de mapa/reducir en Eclipse usando maven para construir el jar de tiempo de ejecución y administrar dependencias. Una vez que hedoop instalado y ejecutándose en mi máquina para soportar HDFS, puedo ejecutar y depurar mi código en Eclipse. Eso significa usar puntos de interrupción y todo lo demás en la perspectiva de depuración de Eclipse.

1

Dado que procesa datos grandes, el tamaño de los mensajes de seguimiento puede ser enorme, por lo que puede causar un problema. Es útil considerar alternativas para "System.out.println" tala estilo:

  • contadores de uso (here es un ejemplo sencillo)
  • registros de escritura en HDFS utilizando MultipleOutputs

Lo mejor de Contadores y salidas múltiples: puede acceder a ellos de forma programable, en caso de salidas múltiples, incluso puede ejecutar tareas de asignación/reducción para extraer algunas estadísticas de los registros.

Otra alternativa a la depuración en el entorno de producción es la comprobación de unidades, MiniMRCluster lo ayudará a probar sus trabajos de reducción de mapas durante la prueba unitaria.

3

Usted podría intentar Jumbune

de su guía:

depurador proporciona estadísticas de flujo de control de nivel de código de ejecución de los trabajos MapReduce. El usuario puede aplicar validaciones de expresiones regulares o clases de validación definidas por el usuario. Según la validación aplicada, Flow Debugger comprueba el flujo de las tuplas de datos de entrada , esencialmente datos de pares para cada asignador y reductor en el trabajo enviado.

Jumbune proporciona una vista completa de tabla/gráfico que representa el flujo de registros de entrada a través del trabajo. El flujo es que se muestra a nivel de trabajo, nivel de MapReduce y nivel de instancia. Las claves/valores no coincidentes representan el número de flujo inesperado de datos clave/valor a través del trabajo. ejercicios depurador hacia abajo en el código para examinar el flujo de datos para varios contadores como bucles y si-condiciones, de lo contrario, si, etc.

Cuestiones relacionadas