$30 off During Our Annual Pro Sale. View Details »

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

    View Slide

  2. ÍNDICE
     Introducción a los logs
     Por qué utilizar Hadoop
     Herramientas de Hadoop
     Casos prácticos
    2

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  22. HERRAMIENTAS DE HADOOP
    22

    View Slide

  23. 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

    View Slide

  24. 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

    View Slide

  25. 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

    View Slide

  26. 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

    View Slide

  27. Chuckwa. Características
     Tolerancia a fallos
     Recuperación ante caídas/pérdidas
     Escalable
    HERRAMIENTAS DE HADOOP
    27

    View Slide

  28. Chuckwa. Arquitectura
    HERRAMIENTAS DE HADOOP
    28

    View Slide

  29. Chuckwa. Arquitectura
    HERRAMIENTAS DE HADOOP
    29

    View Slide

  30. 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

    View Slide

  31. Flume
    HERRAMIENTAS DE HADOOP
    31

    View Slide

  32. 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

    View Slide

  33. Flume. Terminología
    HERRAMIENTAS DE HADOOP
    33

    View Slide

  34. 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

    View Slide

  35. 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

    View Slide

  36. Flume. Características
     No es un sistema de análisis
    HERRAMIENTAS DE HADOOP
    36

    View Slide

  37. 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

    View Slide

  38. 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

    View Slide

  39. 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)

    View Slide

  40. 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)

    View Slide

  41. 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

    View Slide

  42. 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

    View Slide

  43. 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

    View Slide

  44. 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

    View Slide

  45. 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

    View Slide

  46. 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

    View Slide

  47. CASOS PRÁCTICOS
    Creación nuevo
    procesamiento de
    log
    Selección de archivo
    de log
    Parametrización
    del procesamiento
    de log
    47

    View Slide

  48. 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

    View Slide

  49. 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

    View Slide

  50. 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

    View Slide

  51. 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

    View Slide

  52. 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

    View Slide

  53. 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

    View Slide

  54. 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

    View Slide

  55. 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

    View Slide

  56. 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

    View Slide

  57. 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

    View Slide

  58. 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

    View Slide

  59.  Página de Chuckwa
     Chuckwa Guide
     Página de Apache Flume
    Referencias y enlaces de interés

    View Slide

  60. ¡GRACIAS!

    View Slide