Stream Processing: Aplicación Directa Dentro De Una Arquitectura Distribuida
Total Page:16
File Type:pdf, Size:1020Kb
Stream Processing: Aplicación directa dentro de una arquitectura distribuida PROYECTO FIN DE MASTER MASTER UNIVERSITARIO EN SOFTWARE DE SISTEMAS DISTRIBUIDOS Y EMPOTRADOS STREAM PROCESSING: APLICACIÓN DIRECTA DENTRO DE LA ARQUITECTURA DISTRIBUIDA DE UN DASHBOARD Alumno DANIEL ENRIQUE GARCÍA CAFFERATA Tutor SERGIO ARÉVALO VIÑUALES 2018 1 Stream Processing: Aplicación directa dentro de una arquitectura distribuida 2 Stream Processing: Aplicación directa dentro de una arquitectura distribuida CONTENIDO Resumen................................................................................................................................... 5 1. Capitulo I: Introducción.......................................................................................................6 1.1 Introducción................................................................................................................6 1.2 Objetivos.....................................................................................................................7 2. Capitulo II: Estado del Arte................................................................................................ 9 2.1 Sobre la arquitectura Stream Processing............................................................ 9 2.2 La importancia de los logs....................................................................................12 2.3 Procesadores en streaming................................................................................. 13 2.3.1 Apache Flink...............................................................................................13 2.3.2 Apache Storm.............................................................................................16 2.3.3 Apache Samza...........................................................................................18 2.3.4 Otras alternativas: PL/SQL.......................................................................22 2.4 Herramientas de intermediación de mensajes..................................................23 2.4.1 Apache Kafka............................................................................................. 23 2.4.2 RabbitMQ....................................................................................................25 2.4.3 Apache DistributedLog..............................................................................30 2.4.4 MSMQ..........................................................................................................32 3. Capitulo III: Especificación de requisitos del software................................................ 34 3.1 Introducción............................................................................................................ 34 3.1.1 Propósito..................................................................................................... 34 3.1.2 Alcance........................................................................................................34 3.1.3 Definiciones, siglas y abreviaciones.......................................................35 3.1.4 Apreciación global..................................................................................... 36 3.2 Descripción global................................................................................................. 37 3.2.1 Perspectiva del producto..........................................................................37 3.2.2 Funciones del producto.............................................................................39 3.2.3 Características del usuario.......................................................................43 3.2.4 Restricciones.............................................................................................. 43 3.2.5 Atención y dependencias......................................................................... 43 3.3 Requisitos específicos.......................................................................................... 43 3.3.1. Requisitos de desarrollo......................................................................... 43 3.3.2. Atributos del software..............................................................................43 3 Stream Processing: Aplicación directa dentro de una arquitectura distribuida 4. Capitulo IV: Arquitectura heredada................................................................................ 44 5. Capitulo V: Diseño de una nueva arquitectura.............................................................46 5.1 Requisitos............................................................................................................... 46 5.2 Elección de un procesador en streaming.......................................................... 48 5.3 Elección de una herramienta de intermediación de mensajes.......................49 5.4 Puesta en producción con MSMQ y PL/SQL....................................................50 5.5 Solución con Kafka y Flink................................................................................... 52 6. Capitulo VI: Pruebas.........................................................................................................55 6.1 Pruebas de rendimiento........................................................................................55 7. Capitulo VII: Conclusiones...............................................................................................56 Referencias.............................................................................................................................58 ANEXOS................................................................................................................................. 59 1. Instalación de Apache Flink y pequeña demo con Apache Kafka.................... 59 2. Instalación de MSMQ y pequeña demo................................................................ 65 Prerequisitos...........................................................................................................65 Instalación...............................................................................................................65 Una pequeña demo en MSMQ............................................................................66 3. Revisiones en SVN................................................................................................... 70 4 Stream Processing: Aplicación directa dentro de una arquitectura distribuida Resumen Este documento describe la transformación de una aplicación de una empresa dedicada al sector ferroviario. Esta aplicación recoge en tiempo real datos de planificación de transporte ferroviario, los guarda en una base de datos y permite mostrarlos en un centro de mando (Dashboard). Debido a que la aplicación tiene que estar ejecutando todos los días del año y que el numero de trenes a planificar es muy alto ( 5000) tanto las escrituras como las lecturas son muy lentas. La transformación de este proyecto consistirá en adoptar técnicas de Stream Processing que permitan no solo desacoplar las escrituras de las lecturas sino también hacer más modular y escalable el posible crecimiento de la aplicación. This documents describes the transformation of an application of a railway company. This software collects real-time data of railway plannification, saves it in a database and allows to show processed data in a web dashboard. Because of the need to execute this tool all the days and because of the number of trains to plan is very high, read and write operations are very slow. Transformation will consist to adopt Stream Processing techniques that will allow not only to decouple writes operations, but also to make it more modular and scalable the software evolution. 5 Stream Processing: Aplicación directa dentro de una arquitectura distribuida 1. Capitulo I: Introducción 1.1 Introducción Como parte de la cuarta revolución industrial, o como es habitual leerla: Industria 4.0, se incluye un área de estudio relacionada con el tratamiento de grandes volúmenes de datos y el aprovechamiento de los mismos en tiempo real. A esta área se le ha denominado Big Data y análisis de datos. Estos datos, pudiendo estar estructurados, no estructurados o semiestructurados son de un volumen de tal magnitud que las herramientas y técnicas de procesamiento convencionales no son capaces de procesarlas. Teniendo como punto neurálgico esta idea ha surgido un crisol de subapartados de estudio, estrategias, herramientas y paradigmas que se complementan unos a otros resolviendo distintos pequeños problemas. No nos encontramos ante un problema tradicional donde se pueden utilizar detección de patrones, inferencia estadística, etc. Se tratan de verdaderos problemas ya no solo de interpretación, sino también técnicos: rendimiento, capacidad computacional, etc. Problemas técnico que en la última década han sido minimizados con los continuos avances nanotecnológicos. En algún momento de la última década, las corporaciones empezaron a procesar ingentes cantidades de datos capturados en distintos procesos informáticos (por ejemplo, la visita de una página web como empezó a hacer Google Analytics). Hasta hace relativamente poco tiempo, estos datos capturados en distintos puntos no eran capaces de ser procesados y utilizados en tiempo real, sino que debían ser almacenados, para luego ser analizados en un proceso offline que podía tardar varios días. Rápidamente, tras las primeras releases de Hadoop hace 6 años, los grandes departamentos de I+D han empezado a innovar hasta el punto de existir todo un ecosistema de herramientas software