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