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