Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

HERRAMIENTAS DE HADOOP 22

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

Chuckwa. Arquitectura HERRAMIENTAS DE HADOOP 28

Slide 29

Slide 29 text

Chuckwa. Arquitectura HERRAMIENTAS DE HADOOP 29

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

Flume HERRAMIENTAS DE HADOOP 31

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

Flume. Terminología HERRAMIENTAS DE HADOOP 33

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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)

Slide 40

Slide 40 text

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)

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

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

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

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

Slide 60

Slide 60 text

¡GRACIAS!