Upgrade to Pro — share decks privately, control downloads, hide ads and more …

JUC - Analizando logs con Hadoop

CETA-Ciemat
February 12, 2015

JUC - Analizando logs con Hadoop

I Jornadas Técnicas UEx - CIEMAT. Procesando grandes volúmenes de datos con Hadoop

CETA-Ciemat

February 12, 2015
Tweet

More Decks by CETA-Ciemat

Other Decks in Education

Transcript

  1. Jornadas Técnicas Uex-CIEMAT // 10-12 Febrero 2015 Procesando grandes volúmenes

    de datos con HADOOP María Botón Fernández [email protected] Analizando Logs con Hadoop
  2. ÍNDICE  Introducción a los logs  Por qué utilizar

    Hadoop  Herramientas de Hadoop  Casos prácticos 2
  3. Objetivos  Problemáticas al analizar logs.  Por qué utilizar

    Hadoop para el análisis de logs.  Herramientas del ecosistema de Hadoop que nos ayudarán en esta tarea. 3
  4. Introducción a los logs ¿Qué es un log? Registro de

    los eventos que ocurren durante la ejecución de una aplicación o SO. ¿Para qué sirve? Registra datos que respondan a preguntas del tipo ¿Qué? ¿Cómo? ¿Cuándo? ¿Quién? Y ¿Dónde? 4
  5. Introducción a los logs ¿Cuáles son los diferentes tipos de

    logs?  Logs del sistema.  Logs del servidor.  Logs de base de datos.  Logs de aplicaciones.  Logs de comunicaciones. 5
  6. Introducción a los logs Logs del sistema (syslog)  Suelen

    ser usados para gestión del sistema y auditorías.  Clasificados por códigos para saber qué software está creando el log.  Clasificados también por nivel de gravedad.  Avisos automáticos de notificación. 6
  7. Introducción a los logs Logs del servidor  Creados y

    mantenidos por servidores.  Contienen información de cada petición IP del cliente.  Son accesibles para los administradores.  Son útiles para planificar y mejorar el sistema. 7
  8. Introducción a los logs Logs de base de datos 

    Registran todas las operaciones que se producen.  En caso de fallo permiten recuperar la BD a un estado anterior.  Permiten tener dos BD sincronizadas. 8
  9. Introducción a los logs Logs de aplicaciones  Contienen eventos

    registrados por aplicaciones.  El formato, frecuencia o causas las determina el desarrollador.  Incluyen registros informativos, errores o avisos.  No siguen un formato estándar. 9
  10. Introducción a los logs Logs de comunicación  Almacenan comunicaciones/mensajes

    entre aplicaciones.  Registros de redes sociales, comunicación entre programas, juegos multijugador, etc.  Dos tipos:  IRC (Internet Relay Chat).  IM (Instant Messaging). 10
  11. Introducción a los logs Estructura  Cada evento sigue siempre

    el mismo formato.  Sencillo recoger información de ellos.  Tomamos como ejemplo los logs "access log” de Apache.  Recogen todas las peticiones recibidas por el servidor de Apache. 11
  12. Introducción a los logs Estructura  Fecha: 09/Feb / 2

    0 1 5 : 0 4 : 1 6 : 3 9 +0200  Tiempo en servir respuesta: 1  Código de estado: 200  Tamaño de retorno: 3398 12 09/Feb / 2 0 1 5 : 0 4: 1 6 : 3 9 +0200 1 200 3398 GET www. ui c . e s 1 8 9 . 1 0 0 . 4 . 4 4 ‘ ‘/ img/ e sarq / twitter_20x20px . png ’ ’ ‘ ‘ Mo z i l l a /5.0 (Macintosh ; I n t e l Mac OS X 10 _6_8) AppleWebKit / 5 3 4 . 5 9 . 1 0 (KHTML, l i k e Gecko ) Ver s ion / 5 . 1 . 9 S a f a r i / 5 3 4 . 5 9 . 1 0 ’ ’ ‘ ‘ ? id =134773 ’ ’ - joanp
  13. Introducción a los logs Estructura  Método : GET 

    Dominio: www. ui c . e s  IP cliente: 189.100.4.44  Recurso: / img/ e sarq / twitter_20x20px . png 13 09/Feb / 2 0 1 5 : 0 4: 1 6 : 3 9 +0200 1 200 3398 GET www. ui c . e s 1 8 9 . 1 0 0 . 4 . 4 4 ‘ ‘/ img/ e sarq / twitter_20x20px . png ’ ’ ‘ ‘ Mo z i l l a /5.0 (Macintosh ; I n t e l Mac OS X 10 _6_8) AppleWebKit / 5 3 4 . 5 9 . 1 0 (KHTML, l i k e Gecko ) Ver s ion / 5 . 1 . 9 S a f a r i / 5 3 4 . 5 9 . 1 0 ’ ’ ‘ ‘ ? id =134773 ’ ’ - joanp
  14. Introducción a los logs Estructura  User Agent : Mozilla/5.0

    (Macintosh; Intel Mac OS X 10_6_8) Apple- WebKit/534.59.10 (KHTML, like Gecko) Version/5.1.9 Safari/534.59.10  Parámetros: ?id=134773  usuario: joanp 14 09/Feb / 2 0 1 5 : 0 4: 1 6 : 3 9 +0200 1 200 3398 GET www. ui c . e s 1 8 9 . 1 0 0 . 4 . 4 4 ‘ ‘/ img/ e sarq / twitter_20x20px . png ’ ’ ‘ ‘ Mo z i l l a /5.0 (Macintosh ; I n t e l Mac OS X 10 _6_8) AppleWebKit / 5 3 4 . 5 9 . 1 0 (KHTML, l i k e Gecko ) Ver s ion / 5 . 1 . 9 S a f a r i / 5 3 4 . 5 9 . 1 0 ’ ’ ‘ ‘ ? id =134773 ’ ’ - joanp
  15. POR QUÉ UTILIZAR HADOOP  Surgen problemas del tipo: 

    Archivos grandes.  Imposible de abrir.  Búsquedas de largas horas.  Se necesitan herramientas de procesamiento distribuido. 15
  16. POR QUÉ UTILIZAR HADOOP ¿El trabajo que deseo realizar es

    particionable?  Los ficheros logs contienen una línea por cada evento que ocurre.  Podemos cogerlos y procesarlos por separado y de manera independiente. 16 Es factible utilizar Hadoop para procesar los ficheros logs
  17. POR QUÉ UTILIZAR HADOOP  Primeros usos de Hadoop: logs

    clickstream  Las grandes empresas generar 1TB de datos sobre la actividad web de clientes por semana.  Analizar esa información se convierte en una tarea tediosa. 17
  18. POR QUÉ UTILIZAR HADOOP Una experiencia de compra online… 

    Navegamos por una web buscando items para comprar.  Hacemos click para leer la descripción de un producto que nos llama la atención.  Añadimos un objeto a nuestra cesta de la compra e iniciamos el proceso de compra.  Finalmente, al ver el coste global cancelamos. 18
  19. POR QUÉ UTILIZAR HADOOP ¿Qué beneficios podemos esperar de ello?

    Almacenar los registros de manera óptima. Facilitar la posterior recogida de información. Mejorar el procesamiento de estos datos. Facilitar el análisis de la información. 19
  20. POR QUÉ UTILIZAR HADOOP Ejemplos de empresas que usan Hadoop

     Facebook: utiliza Hadoop para copias internas de logs y como medio para sus análisis.  Fox Audience Network: análisis de logs, datamining y machine-learning.  Greece.com: análisis de logs y datamining. 20
  21. POR QUÉ UTILIZAR HADOOP Ejemplos de empresas que usan Hadoop

     Infolinks: para analizar las producciones de logs.  Rackspace: para parsear e indexar logs desde emails.  Web Alliance: para análisis de logs y predecir tendencias. 21 http://wiki.apache.org/hadoop/PoweredBy
  22. Chuckwa. Objetivos  Recoger…  Métricas del sistema.  Ficheros

    de logs arbitrarios.  Ficheros de logs conocidos.  Escalar para clusters de grandes dimensiones. HERRAMIENTAS DE HADOOP 23
  23. Chuckwa. Objetivos  Ser capaz de responder ante fallos de

    red durante la recogida de datos.  Beneficiarse de las ventajas que proporcionan HDFS y MapReduce HERRAMIENTAS DE HADOOP 24
  24. Chuckwa. Características  Tratan de dar soporte a … 

    Aplicaciones sensibles ante pérdidas de datos  Aplicaciones sensibles a los tiempos de latencia HERRAMIENTAS DE HADOOP 25
  25. Chuckwa. Características HERRAMIENTAS DE HADOOP 26 Reliable delivery Fast-path delivery

    Visible en minutos Visible en segundos Escribe en HDFS Escribe en sockets Reenvía ante fallos No reenvía Cualquier tipo de datos Datos filtrados por el usuario Soporta MapReduce No está soportado En orden No está garantizado
  26. Flume Sistema distribuido para recogida, agregación y transferencia eficiente de

    grandes cantidades de datos log desde múltiples fuentes hacia una estructura de almacenamiento centralizada. HERRAMIENTAS DE HADOOP 30
  27. Flume. Terminología  Cada máquina en Flume se conoce como

    nodo.  Cada nodo tiene una fuente y un contenedor.  Algunos contenedores envían datos a nodos de tipo collector.  Los nodos collector agregan los datos antes de escribir a HDFS. HERRAMIENTAS DE HADOOP 32
  28. Flume. Terminología  Un evento es la unidad de datos

    fundamental que se transfiere en Flume.  Un cliente es la entidad que genera eventos y los envía a uno o varios nodos agentes.  Un agente es un contenedor para albergar fuentes, canales, etc. HERRAMIENTAS DE HADOOP 34
  29. Flume. Características  Flexibilidad  Nuevas fuentes y contenedores pueden

    ser agregados  La topología puede ser reconfigurada dinámicamente  Los datos de los eventos pueden ser arbitrarios HERRAMIENTAS DE HADOOP 35
  30. Supuesto 1… Queremos procesar los logs de un sitio web

    de una compañía llamada ACME Inc. CASOS PRÁCTICOS 37 10.223.157.186 - - [15/Jul/2009:14:58:59 -0700] "GET / HTTP/1.1" 403 202 10.223.157.186 - - [15/Jul/2009:14:58:59 -0700] "GET /favicon.ico HTTP/1.1" 404 209 10.223.157.186 - - [15/Jul/2009:15:50:35 -0700] "GET / HTTP/1.1" 200 9157 10.223.157.186 - - [15/Jul/2009:15:50:35 -0700] "GET /assets/js/lowpro.js HTTP/1.1" 200 10469 10.223.157.186 - - [15/Jul/2009:15:50:35 -0700] "GET /assets/css/reset.css HTTP/1.1" 200 1014 10.216.113.172 - - [07/Jan/2010:03:37:22 -0800] "GET /displaytitle.php?id=210 HTTP/1.1" 200 8141 10.216.113.172 - - [07/Jan/2010:03:37:23 -0800] "GET /assets/css/combined.css HTTP/1.1" 304 – 10.80.135.35 - - [07/Jan/2010:03:37:51 -0800] "GET / HTTP/1.1" 200 4095 10.80.135.35 - - [07/Jan/2010:03:38:19 -0800] "GET /news HTTP/1.1" 301 201 10.80.135.35 - - [07/Jan/2010:03:38:19 -0800] "GET /news/ HTTP/1.1" 200 3202
  31. Supuesto 1… Necesitamos saber el número de aciertos registrados por

    cada IP CASOS PRÁCTICOS 38 10.223.157.186 - - [15/Jul/2009:14:58:59 -0700] "GET / HTTP/1.1" 403 202 10.223.157.186 - - [15/Jul/2009:14:58:59 -0700] "GET /favicon.ico HTTP/1.1" 404 209 10.223.157.186 - - [15/Jul/2009:15:50:35 -0700] "GET / HTTP/1.1" 200 9157 10.223.157.186 - - [15/Jul/2009:15:50:35 -0700] "GET /assets/js/lowpro.js HTTP/1.1" 200 10469 10.223.157.186 - - [15/Jul/2009:15:50:35 -0700] "GET /assets/css/reset.css HTTP/1.1" 200 1014 10.216.113.172 - - [07/Jan/2010:03:37:22 -0800] "GET /displaytitle.php?id=210 HTTP/1.1" 200 8141 10.216.113.172 - - [07/Jan/2010:03:37:23 -0800] "GET /assets/css/combined.css HTTP/1.1" 304 – 10.80.135.35 - - [07/Jan/2010:03:37:51 -0800] "GET / HTTP/1.1" 200 4095 10.80.135.35 - - [07/Jan/2010:03:38:19 -0800] "GET /news HTTP/1.1" 301 201 10.80.135.35 - - [07/Jan/2010:03:38:19 -0800] "GET /news/ HTTP/1.1" 200 3202
  32. Supuesto 1… Tarea map CASOS PRÁCTICOS 39 import sys for

    line in sys.stdin: data = line.strip().split(" ") if len(data) == 10: ip, id, user, datetime, timezone, method, path, proto, status, size = data print '%s\t%s' % (ip, 1)
  33. Supuesto 1… Tarea reduce CASOS PRÁCTICOS 40 import sys total_hits

    = 0 old_key = None for line in sys.stdin: data_mapped = line.strip().split('\t') if len(data_mapped) != 2: continue this_key, this_hit = data_mapped for line in sys.stdin: ………………………………………………….. if old_key and old_key != this_key: print '%s\t%s' % (old_key, total_hits) old_key = this_key; total_hits = 0 old_key = this_key total_hits += 1 if old_key != None: print '%s\t%s' % (old_key, total_hits)
  34. CASOS PRÁCTICOS Supuesto 2….  Nuestra empresa/centro genera cada vez

    más ficheros de logs  Los métodos tradicionales no sean aplicables  No hay presupuesto para adoptar una solución comercial Nos encargan el diseño y desarrollo de un sistema que optimice el análisis y procesamiento de logs 41
  35. CASOS PRÁCTICOS Nosotros…. Vamos a basar nuestro sistema en Hadoop

    Vamos a definir los requisitos de nuestro sistema Vamos a establecer prioridades entre los requisitos Se implementa el sistema 42
  36. CASOS PRÁCTICOS Cosas a tener en cuenta para el diseño

     Quitar información redundante y limpiar datos innecesarios.  Ligeros  Procesamiento más rápido  Adaptarnos a los ficheros de entrada de las herramientas de estadísticas 43
  37. CASOS PRÁCTICOS 44 Creación nuevo procesamiento de log Selección de

    archivo de log Parametrización del procesamiento de log Selección del formato de salida Iniciar procesamiento log Monitorización de Hadoop Cancelar procesamiento log Obtención de resultados
  38. CASOS PRÁCTICOS Crear nuevo procesamiento de log  Permite iniciar

    el proceso de un nuevo log  Relación con otros requisitos (parametrizar)  Control permisos 45
  39. CASOS PRÁCTICOS Selección de un archivo de log  Se

    permite la subida de un fichero al sistema  Este fichero será el que se procese mediante nuestro sistema  El sistema verifica que todo es correcto  Da paso a otro de los requisitos 46
  40. CASOS PRÁCTICOS Creación nuevo procesamiento de log Selección de archivo

    de log Parametrización del procesamiento de log 47
  41. CASOS PRÁCTICOS Parametrización del procesamiento de un log  Se

    muestran una serie de parametrizaciones posibles  Se da opción a establecer prioridad  Se permite programar y especificar otras características del procesamiento  Gestión de notificaciones 48
  42. CASOS PRÁCTICOS Selección del formato de salida  Se permite

    seleccionar el formato de salida  Habrá que tener en cuenta si el procesamiento ha sido correcto o no.  Se permite al usuario escoger el formato de salida de los resultados 49
  43. CASOS PRÁCTICOS Creación nuevo procesamiento de log Selección de archivo

    de log Iniciar procesamiento 50 Parametrización del procesamiento de log Selección del formato de salida
  44. CASOS PRÁCTICOS Iniciar proceso log  Se inicia el proceso

    sobre el log específico  Se da opción a iniciar un log previamente guardado  Se controlan errores durante el procesamiento y se permiten varias soluciones 51
  45. CASOS PRÁCTICOS Monitorización de Hadoop  Visualizaremos el estado de

    la infraestructura.  Hadoop proporciona esta información.  Esta opción no estará disponible para todos los usuarios.  Control de incidencias. 52
  46. CASOS PRÁCTICOS Creación nuevo procesamiento de log Selección de archivo

    de log 53 Parametrización del procesamiento de log Selección del formato de salida Iniciar procesamiento log Monitorización de Hadoop
  47. CASOS PRÁCTICOS Cancelar el procesamiento de un log  Ventana

    de procesos activos  Habilitada para cada proceso log  Pediremos confirmación  Control de excepciones 54
  48. CASOS PRÁCTICOS Obtención de resultados  Se controla que el

    proceso log haya finalizado  Se permite la descarga del fichero  Se permite navegar por el sistema de ficheros y descargarlo manualmente  Control de excepciones 55
  49. CASOS PRÁCTICOS Creación nuevo procesamiento de log Selección de archivo

    de log 56 Parametrización del procesamiento de log Selección del formato de salida Iniciar procesamiento log Monitorización de Hadoop Cancelar procesamiento log Obtención de resultados
  50. CASOS PRÁCTICOS Damos prioridad a los requisitos 57 Requisito Prioridad

    Crear un nuevo procesamiento de log Alta Seleccionar un archivo de log Alta Parametrización del procesamiento de un log Media Selección del formato de salida de un log Media Iniciar proceso log Alta Monitorización de Hadoop Baja Cancelar el procesamiento de un log Media Obtención de resultados Alta
  51. Tecnologías que se pueden aplicar  Hadoop  Bases de

    datos: HBase, Cassandra, MongoDB, Hive  Frameworks sobre Hadoop: Ambari, Cloudera Manager, Hue  Distribuciones: Hortonworks, MapR, Cloudera CASOS PRÁCTICOS 58
  52.  Página de Chuckwa  Chuckwa Guide  Página de

    Apache Flume Referencias y enlaces de interés