Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Paradigmas de Procesamiento en Big Data: Arquitecturas y Tecnologías aplicadas

El objetivo de la charla es el de brindar una visión global de los distintos paradigmas de procesamiento que existen en Big data y de las tecnologías de última generación asociadas a cada uno de las etapas necesarias para desarrollar un proyecto Big Data.

  • Login to see the comments

Paradigmas de Procesamiento en Big Data: Arquitecturas y Tecnologías aplicadas

  1. 1. Paradigmas de Procesamiento en Big Data Arquitecturas y Tecnologías aplicadas Guadalupe Miñana guamiro@fdi.ucm.es
  2. 2. “Big data” se refiere a todo lo relacionado con la captura, almacenamiento, procesamiento, análisis y visualización de conjuntos de datos caracterizados por su Volumen, Velocidad y Variedad 3 ies son la cuasa del big Data ¿Qué es Big Data? 2
  3. 3. ¿Qué es Big Data? §  ¿ Big Data es un problema de Ingeniería o de Ciencia? §  Cómo montar una arquitectura que de soporte a big data y sea escalable es un problema de ingeniería §  Cómo dar valor a los datos es un problema de ciencia Ingeniero InformáMco CienNfico de datos 3
  4. 4. Paradigmas del procesamiento 3 problemas 3 soluciones 4
  5. 5. §  Las grandes bases de datos no son caras de almacenar pero se necesita un supercomputador para su procesamiento §  La paralelización ahorra mucho Mempo §  No sólo es úAl en consultas sino también en la ejecución de algoritmos o analíAcas 5 Procesamiento distribuido y paralelo Coste de 1 TB = 50€ Tiempo de acceso (lectura) de 1TB Un solo servidor 1000 servidores 6 horas 20 s
  6. 6. Paradigmas del procesamiento §  Procesamiento por lotes (batch processing) §  Solución para el problema del volumen §  Se centra en el procesamiento de gran canAdad de datos estáAcos §  Escalable §  Procesamiento distribuido y paralelo §  Tolerancia a fallos §  Alta latencia §  Sistema completamente maduro §  Procesamiento en Mempo real (streaming processing) §  Solución para el problema de la velocidad §  Se centra en el procesamiento de un flujo ilimitado y conAnuo de datos §  Computación de datos en Aempo real §  Procesamiento distribuido y paralelo §  Tolerancia a fallos §  Baja latencia §  Procesamiento híbrido §  Arquitectura Lambda §  Solución para el problema del volumen y la velocidad §  Combina los resultados de analizar datos estáAcos y datos en Aempo real 6
  7. 7. Tecnologías para el procesamiento en big data 2013 2012 2014 Nathan Marz define la arquitectura Lambda Lambdoop & Summinbgird Primeros pasos Linkedln presenta KaVa Linkedln presenta Samza Cloudera presenta Flume Nathan Marz crea Storm Yahoo! Crea S4 2011 2008 Spark es código libre Stratosphere presenta Apache Flink 2009 2010 2006 2005 2004 2003 Yahoo! Crea Pig Apache Hadoop Esta en producción Yahoo! empieza a trabajar con Hadoop Ar]culo Google File System Ar]culo de Google MapReduce Doug Cu`ng empieza a desarrollar Hadoop Facebook crea Hive Google desarrolla Big Table Batch Streaming Hibrida scribe (por Facebook) código libre 7
  8. 8. §  Se han ido desarrollando disAntas herramientas para cada una de las fases y para cada uno de los Apos de procesamiento Pipeline del procesamiento 8 Almacenamiento de datos Análisis de datos Presentación resultados Adquisición de datos
  9. 9. Procesamiento por lotes
  10. 10. §  Hadoop ha sido la herramienta estrella en la implementación de la arquitectura batch processing §  Se han ido desarrollando disAntas herramientas para cada una de las fases y con disMntos niveles de abstracción → Ecosistema Hadoop Procesamiento por lotes q  Comandos HDFS q Sqoop q  Flume q Chukwa q  Scribe q  HDFS q HBase q  Map –Reduce q Hive q  Pig q Cascading q Spark q Spark SQL (Shark) 10 Almacenamiento de datos Análisis de datos Presentación resultados Adquisición de datos
  11. 11. ¿Qué es Haddop? §  Librería sogware que permite manejar grandes volúmenes de información de forma distribuida §  Creado en 2006 por Doug Cu`ng como proyecto Apache so$ware para computación distribuida 11 (Hadoop Distributed File System )
  12. 12. Hadoop HDFS §  Soaware encargado de almacenar y gesMonar datos en un Clúster §  Diseñado para: §  Ser uAlizado en computadoras baratas y de baja gama (Commodity hardware) §  Ser capaz de almacenar grandes ficheros de datos (PetaBytes) §  Ser capaz de procesar un gran volumen de información uAlizando MapReduce §  Fue creado a parAr del Google File System (GFS) §  CaracterísMcas: §  Elevado ancho de banda §  Más importante el ancho de banda que la latencia de acceso a los datos (proceso batch) §  Tolerancia a fallos (mediante replicación) §  Modelo de coherencia simple §  Es portable entre disAntas plataformas §  Escalamiento horizontal dinámico y con rebalanceo §  Trabaja en un entorno separado de los ficheros del SO local §  Escrito en Java Almacenamiento de datos B A T C H 12
  13. 13. HDFS §  Arquitectura de HDFS Cluster Computadores Baratos, de gama baja Nodo Maestro Nodos esclavos Computador Mas potente Más memoria RAM Metadata NameNode 13 En el ejm, Tamaño del boque= 64MB, un fichero de 100 MB se almacenaría en 2 bloques Almacenamiento de datos B A T C H F1-B2 F2-B1 F2-B2 F1-B1 DataNode1 DataNode2 DataNode3 DataNode4
  14. 14. MapReduce §  Modelo de programación para el procesamiento paralelo de grandes conjuntos de datos §  Diseñado y desarrollado originalmente por Google (2004) §  Popularizado por la implementación open source Apache Hadoop §  CaracterísMcas: §  Basado en: §  La programación funcional §  El algoritmo Divide y Vencerás §  Permite al desarrollador expresar sus algoritmos uAlizando únicamente dos funciones map y reduce §  Facilita un patrón de desarrollo paralelo para simplificar la implementación de aplicaciones en entornos distribuidos §  Los programas escritos son automáAcamente paralelizados y ejecutados en un clúster de máquinas §  Puede aplicarse tanto sobre datos almacenados en sistemas de ficheros, como en bases de datos §  Existen librerías para §  C++, Java, Ruby y Phython Análisis de datos B A T C H 14
  15. 15. §  Esquema §  Fase Input §  Divide los datos §  Prepara los datos → claves/valor §  Fase Map §  Ejecuta la función map para cada par clave/valor §  Fases Shuffle & Sort §  Ordena y agrupa por clave los resultados de la fase map §  Fase Reduce §  Ejecuta la función reduce §  Puede haber una o múlAples funciones Reduce §  Fase Output §  Almacena el/los resultados en un sistema de ficheros , una base de datos … 15 Análisis de datos B A T C H MapReduce
  16. 16. Ejemplo MapReduce en,1 la,1 mancha,1 vale,1 la,1 pena,1 un,1 lugar,1 de,1 más,1 En un lugar de la mancha Mas vale la pena en el rostro que la mancha en el corazón El amor es deseo de belleza MAP MAP MAP Reduce Reduce Entrada Salida §  Contar el número de veces que aparece cada palabra en un fichero 16 Análisis de datos B A T C H Pseudocódigo de la función Map Clave = nombre del fichero o el número de línea, pero en este caso no se necesita Valor= línea de texto Map (Clave, valor) for each word w in value emit(w, 1)
  17. 17. Ejemplo MapReduce En un lugar de la mancha Mas vale la pena en el rostro que la mancha en el corazón El amor es deseo de belleza MAP MAP MAP en,1 rostro,1 la,1 mancha,1 en,1 el,1 que,1 Reduce Reduce Entrada Salida 17 Análisis de datos B A T C H §  Contar el número de veces que aparece cada palabra en un fichero
  18. 18. Ejemplo MapReduce En un lugar de la mancha Mas vale la pena en el rostro que la mancha en el corazón El amor es deseo de belleza MAP MAP MAP corazón,1 amor,1 deseo,1 el,1 el,1 es,1 de,1 belleza,1 Reduce Reduce Entrada Salida 18 Análisis de datos B A T C H §  Contar el número de veces que aparece cada palabra en un fichero
  19. 19. Ejemplo MapReduce Reduce Shuffle & Sort Reduce amor,1 corazón,1 deseo,1 en,1 ,1,1 la,1,1,1 mancha,1,1 pena,1 rostro,1 vale,1 belleza,1 de,1,1 el,1,1,1 es,1 lugar,1 más,1 que,1 un,1 En un lugar de la mancha Mas vale la pena en el rostro que la mancha en el corazón El amor es deseo de belleza MAP MAP MAP Entrada Salida 19 Análisis de datos B A T C H §  Contar el número de veces que aparece cada palabra en un fichero
  20. 20. Ejemplo MapReduce Reduce Shuffle & Sort Reduce En un lugar de la mancha Mas vale la pena en el rostro que la mancha en el corazón El amor es deseo de belleza MAP MAP MAP amor,1 corazón,1 deseo,1 en,3 la,3 mancha,2 pena,1 rostro,1 vale,1 belleza,1 de,2 el,3 es,1 lugar,1 más,1 que,1 un,1 Entrada Salida 20 Análisis de datos B A T C H Pseudocódigo del Reduce Clave=palabra; Valor= un iterador sobre los 1s Reduce(Clave, Valor) emit(Clave, suma (valores)) §  Contar el número de veces que aparece cada palabra en un fichero
  21. 21. Ejemplo MapReduce §  Calidad del aire de Asturias §  Estaciones estáAcas, sensores móviles envían datos en Aempo real §  Histórico de datos desde hace 10 años §  Monitorización, idenAficación de tendencias, predicción ….. 21 Análisis de datos B A T C H
  22. 22. Ejemplo MapReduce <1,6> <1,2> <3,1> <1,9> … <3,9> <2,6> <2,6> <1,6> … MAP <2,0> <2,8> <1,2> <3,9> … MAP MAP <1,{1,0,4,…}> <2,{2,3,0,…}> … ID-Estación, Media SO2 1  2,013 2  2,695 3  3,562 . . . Datos shuffle Estación; Nombre; LaAtud; Longitud; Fecha, SO2; NO; CO; PM10; O3; dd; vv; TMP; HR; PRB; §  Obtener la media de SO2 de cada estación 22 Análisis de datos B A T C H Clave=nombre del fichero, Valor= línea del fichero Map (Clave, Valor) for each Valor emit(id estación, SO2) Clave=Id de la estación, Valor= lista de canAdades de CO2 Reduce(Clave, Valor) emit(Clave, average (Valor)) Reduce Hace la media Reduce Hace la media
  23. 23. Modelo de ejecución MapReduce §  Minimizar el movimiento de los datos §  Llevar la computación a los datos §  Las funciones map() y reduce() se ejecutan en los nodos donde se encuentran los datos §  Facilitar al programador sin experiencia en sistemas distribuidos y paralelos uAlizar los recursos §  El sistema se encargar de: §  Distribuir el trabajo §  Los detalles de parAcionamiento de los datos de entrada §  El control de las instancias del programa en las máquinas §  Manipular los fallos y la comunicación §  El programador sólo se Aene que encargar de programar las funciones map() y reduce() §  Tolerante a fallos §  Altamente escalable 23 Análisis de datos B A T C H
  24. 24. §  Implementación de MapReduce sobre HDFS Implementación de MapReduce Task Tracker Reduce Map DataNode1 Reduce Map Reduce Map Reduce Map Job Tracker Metadata Cluster Hadoop Computadores Baratos, de gama baja Nodo Maestro Nodos esclavos Computador mas potente, más memoria RAM DataNode2 DataNode3 DataNod4 NameNode 24 Análisis de datos B A T C H Task Tracker Task Tracker Task Tracker
  25. 25. Tecnologías para el procesamiento por lotes Almacenamiento de datos Análisis de datos Presentación resultados Adquisición de datos q  Comandos HDFS q Sqoop q  Flume q Chukwa q  Scribe q  HDFS q HBase q  Map –Reduce q Hive q  Pig q Cascading q Spark q Spark SQL (Shark) 25
  26. 26. §  Transforma los registros de la base de datos relacionales en información que se puede almacenar en bases de datos distribuidas §  Está desarrollado en Java y usa MapReduce para transferir datos en paralelo §  Trabaja con conectores: §  Estándares (basados en JDBC) §  Directos, para mejorar el rendimiento, para bases de datos como MySQL, Oracle, SQL Server,…PostgreSQLDB2 §  Se creó en un hackathon en Cloudera y luego se transfirió a código abierto Sqoop §  Proyecto pensado para facilitar la importación y exportación de datos entre Hadoop (HDFS o Hbase) y bases de datos relacionales 26 Adquisición de datos B A T C H
  27. 27. Sqoop §  Mover datos de HDFS hacia una base de datos relacional es un caso de uso común §  HDFS y Map-Reduce son magníficos para realizar el trabajo pesado §  Para consultas sencillas o almacenamiento de back-end para un siAo web, se pasa la salida de Map-Reduce a un almacenamiento relacional 27 Adquisición de datos B A T C H
  28. 28. Flume “ Apache Flume es un sistema distribuido y seguro para recoger, agregar y mover grandes volúmenes de datos provenientes de logs desde disAntas fuentes a un almacén de datos Centralizado” def. web oficial del proyecto Apache Flume §  Proyecto iniciado por Cloudera y actualmente bajo la dirección de Apache §  CaracterísAcas: fiable, tolerante a fallos, escalable §  La novedad que incorpora es que permite importar datos a HDFS desde una fuente que los genera de forma conMnua (flujos de datos en streaming) §  No sólo agrega datos desde logs, también permite recoger datos desde eventos ligados al tráfico de red, redes sociales, mensajes de correo electrónico … §  Permite la automaAzación de la carga de datos 28 Adquisición de datos B A T C H
  29. 29. Flume §  Arquitectura de Flume: §  Fuente externa: §  Aplicación o mecanismo, como un servidor web o una consola de comandos, desde la cual se generan eventos de datos que van a ser recogidos por la fuente §  Fuente: §  Se encarga de recoger eventos desde la fuente externa en un formato reconocible por flume y pasárselos transaccionalmente al canal §  Canal: §  Actúa de almacén intermedio entre la fuente y el sumidero. Los datos permanecerán en el canal hasta que el sumidero u otro canal los consuman §  Esto es muy importante ya que hace que el flujo de datos sea fiable y tolerante a fallos §  Sumidero: §  Se encarga de recoger los datos desde el canal dentro de una transacción y de moverlos a un repositorio externo, otra fuente o a un canal §  Repositorio externo: §  Para almacenar en un sistema de ficheros como puede ser HDFS los datos procesados en flume Canal fuente sumidero Agente HDFS Servidor web 29 Adquisición de datos B A T C H
  30. 30. Flume §  Ejemplo: Una estación de datos de calidad de aire envía datos a un servidor §  La aplicación flume los recolecta y los envía a HDFS para su posterior análisis Canal fuente sumidero Agente Calidad-Aire HDFS 30 Adquisición de datos B A T C H
  31. 31. Flume §  Ejemplo de configuración un agente Flume §  Definir el agente a1 que tendrá una fuente r1 que estará escuchando en el puerto 4444, un sumidero k1 que será HDFS y un canal intermedio c1 que almacenará en memoria los datos escuchados por la fuente //Nombre de las componentes del agente a1.sources = r1 a1.sinks = k1 a1.channels = c1 //Descripción/Configuración de la fuente a1.sources.r1.type = Syslog a1.sources.r1.host = localhost a1.sources.r1.port = 44444 // Descripción del sumidero a1.sinks.k1.type = hdfs //Descripción del canal: buffer en memoria a1.channels.c1.type = memory a1.channels.c1.capacity = 1000 a1.channels.c1.transacMonCapacity = 100 //Enlazar la fuente y el sumidero mediante el canal a1.sources.r1.channels = c1 a1.sinks.k1.channel = c1 31 Adquisición de datos B A T C H
  32. 32. Flume §  Se pueden concatenar disAntos flujos para hacer un sistema más complejo 32 Adquisición de datos B A T C H
  33. 33. Chukwa §  Es un sistema de captura de datos y framework de análisis que trabaja con Hadoop para procesar y analizar grandes volúmenes de logs §  Incluye herramientas para mostrar y analizar los datos capturados §  Principales caracterísMcas: §  Puede recoger una gran variedad de métricas y recibir datos a través de varios protocolos de red, incluyendo syslog §  Trabaja con HDFS y MapReduce para procesar sus datos y por lo tanto puede escalar fácilmente a miles de nodos en la recolección y análisis §  Proporciona un marco familiar para el análisis de los datos recogidos §  Sus componentes son plugeables y pueden personalizarse y mejorarse §  Soporta la recuperación ante fallos, usando las copias locales de los archivos de registro, en las máquinas donde se generan 33 Adquisición de datos B A T C H
  34. 34. Chukwa §  Arquitectura de Chukwa §  Agentes: procesos que corren en cada máquina en la que se generan los logs que se quieren transferir §  Recolectan los logs desde la capa de aplicación usando Adaptadores §  Un Agente puede tener varios adaptadores, cada uno realizando una tarea separada de recolectar logs §  Colectores: se encargan de recolectar los logs de varios agentes y escribirlos en un fichero Data Sink en HDFS §  Cada Sink File es un fichero Hadoop que conAene un grupo de claves-valor y marcadores para facilitar el acceso MapReduce §  Si el fichero Aene extensión .chukwa es que aún está procesándose, cuando el colector cierra el fichero le pone extensión .done §  Los Jobs Map Reduce de Chukwa se encargan de procesar los ficheros .done §  Mueve todos los ficheros .done fuera del Sink y corre un job MapReduce para agruparlos en Archive Files 34 Adquisición de datos B A T C H
  35. 35. Scribe §  Si el servidor central no está disponible se persiste el mensaje en local para su posterior envío §  Los servidores centrales pueden pasar los mensajes a un desAno final o a otra capa superior de servidores §  Se puede describir como un servidor para ir agrupando logs transmiAdos en Mempo real desde un gran número de servidores §  Está diseñado para escalar a gran número de nodos y ser robusto a fallos de red o nodos §  Es un proyecto con origen en Facebook §  Lo Aenen instalado en miles de máquinas y procesando miles de millones de mensajes al día §  Se instala en cada nodo del sistema configurándolo para agrupar mensajes y enviarlos a un servidor central (o un grupo de servidores) Adquisición de datos B A T C H 35
  36. 36. Hbase §  Es la base de datos de Hadoop §  No sigue un esquema relacional §  No admite SQL §  Distribuida §  ParAcionado automáAco de las tablas §  Orientada por columnas §  Diseñada a parAr de Google BigTable §  Tablet ~ region §  Master server ~ HBase master §  Tablet server ~ HBase Region server §  Chubby ~ Zookeeper §  GFS ~ HDFS §  SSTable file ~ MapFile file §  Está montada sobre HDFS de Hadoop §  Está en un nivel de abstracción por encima §  Permite cargar programas en Java para realizar MapReduces personalizados §  No Aene un lenguaje de consulta intuiAvo §  UAliza un lenguaje pseudo-javascript para crear tablas y realizar consultas 36 Almacenamiento de datos B A T C H APIs para el acceso a la base de datos
  37. 37. Hive §  Es un sistema de Data Warehouse para Hadoop que facilita el uso de la agregación de los datos, consultas y el análisis de grandes datasets almacenados en Hadoop §  Desarrollado por Facebook en enero de 2007 §  Se pasa a código abierto en agosto de 2008 §  Proporciona métodos de consulta de los datos usando el lenguaje HiveQL, parecido al SQL §  Las consultas realizadas desde HiveQL se ejecutan siguiendo el modelo Map-Reduce §  Hive se encarga de traducir la consulta escrita con HiveQL en tareas Map-Reduce §  Permite al programador escribir sus propias funciones map y reduce cuando el rendimiento no es el correcto §  La latencia de las consultas suele ser mayor que las realizadas en las bases de datos relacionales debido a la inicialización de Map/Reduce §  Permite hacer consultas a tablas que se encuentren en Hbase §  Tiene interfaces JDBC/ODBC, por lo que se`puede integrar con herramientas de BI 37 Análisis de datos B A T C H
  38. 38. Hive §  Arquitectura §  Interfaz de usuario: método de entrada del usuario para realizar las consultas §  Driver: recibe las consultas y se encarga de implementar las sesiones §  Compilador: parsea la consulta y realiza análisis semánAcos y otras comprobaciones de lenguaje para generar un plan de ejecución con la ayuda del metastore §  Motores de ejecución: se encargan de llevar a cabo el plan de ejecución realizado por el compilador §  Metastore: almacena toda la información -metadatos- de la estructura que manAenen los datos dentro de Hive -es decir, Aene el esquema de las bases de datos, tablas, parAciones… 38 Análisis de datos B A T C H
  39. 39. §  Ejemplo : Obtener la media de SO2 de cada estación Hive //Crear una tabla con datos almacenados en HDFS: CREATE TABLE Calidad-Aire (Estación int, Titulo string, LaAtud double, …., SO2 int, NO int, ..) ROW FORMAT DELIMITED FIELDS TERMINATED BY ';' LINES TERMINATED BY 'n' STORED AS TEXTFILE; //Cargar datos en la tabla: LOAD DATA INPATH '/CalidadAire_Gijon' OVERWRITE INTO TABLE Calidad-Aire; //Consulta a tabla para hacer la media de SO2 de cada estación: SELECT Titulo, avg(SO2) FROM Calidad-Aire GROUP BY Estacion; 39 Análisis de datos B A T C H
  40. 40. Pig §  Es un lenguaje de programación de flujos de datos, de alto nivel, desarrollado para facilitar la programación de MapReduce sobre hadoop §  Un lenguaje propio: Pig La5n §  Es relaAvamente fácil de aprender pues es muy expresivo y legible §  Programas ejecutados como: §  Scripts en Pig LaAn §  Grunt: shell interacAvo para ejecutar comandos Pig §  Comandos Pig ejecutados desde Java §  PigPen: entorno de desarrollo para Eclipse §  Es eficiente frente a grandes flujos de datos §  Permite a los usuarios de Hadoop centrarse en el “qué” en vez de en el “cómo” §  Inicialmente desarrollado por Yahoo, en 2006 §  En 2007 fue incorporado al proyecto Apache 40 Análisis de datos B A T C H
  41. 41. Cargar usuario Filtrar por edad Unir por nombre Agrupar por URL Contar clicks Ordenar clicks Tomar los 5 primeros Cargar páginas Pig §  Ejemplo: Se Aene un Fichero con datos de usuarios (“user”) y un Fichero con lista de páginas visitadas por los usuarios (“pages”). Buscar las 5 páginas más visitadas por usuarios con edades entre 18 y 25 años Pages = load “pages” as (user, url); Users = load “user” as (name, age); Filtered = filter Users by age >= 18 and age <= 25; Joined = join Filtered by name, Pages by user; Grouped = group Joined by url; Summed = foreach Grouped generate group count(Joined) as clicks; Sorted = order Summed by clicks desc; Top5 = limit Sorted 5; store Top5 into ’top5sites’; 41 Análisis de datos B A T C H
  42. 42. Cascading §  Un soaware de capa de abstracción para Hadoop §  Permite a los usuarios crear y ejecutar flujos de trabajo de procesamiento de datos en clústeres Hadoop usando cualquier lenguaje basado en JVM §  Su objeAvo es ocultar la complejidad subyacente de los trabajos de MapReduce §  Diseñado por Chris Wensel como alternaAva API a MapReduce §  El soporte comercial para Cascading es ofrecido por Concurrent, una empresa fundada por Wensel §  Está disponible bajo la General Public License de GNU §  Entre las empresas que uAlizan Cascading están Twi…er y Etsy §  Hay otras herramientas que no son Java por encima de Cascading que se usan comúnmente como Cascalog o Scalding 42 Análisis de datos B A T C H
  43. 43. Spark §  Es una familia nueva de tecnologías que surge como alternaMva al framework de map reduce §  Se incubó en Berkeley AmpLabs como parte de la tesis doctoral §  2009 primer paper §  Surge como un proyecto para jusAficar otro proyecto, (Mesos, sistema de gesAón de clústers ) §  Open source en 2010 §  Primero en la fase de incubadora y en 2014 es uno de los tres proyectos mas acAvos de Apache Sogware FundaAon §  Se creo Databricks, una startup que desarrolla Spark §  Hay una comunidad de desarrolladores §  Madrid Apache Spark Meetup §  Está desarrollado en Scala §  Proporciona API´s para Java, Scala & Python 43 Análisis de datos B A T C H
  44. 44. Spark §  Modelo de programación: “Resilient Distributed Datasets” (RDDs) §  Abstracción básica de Spark para trabajar con cualquier Mpo de dato §  Es una colección distribuida de elementos, objetos §  Sobre los RDD se hacen todas las transformaciones necesarias para resolver el problema §  Además de los datos, los RDD conAenen todas las operaciones de transformación que se van a ejecutar sobre ellos §  Cada RDD se divide en múlAples parAciones las cuales pueden ser ejecutadas en paralelo en diferentes nodos del clúster §  El RDD también guarda información sobre las parAciones y a qué nodo Aene que ir §  Son inmutables §  Una vez extraídos los datos se asume que no van a cambiar por lo que no se vuelven a leer de disco §  Las transformaciones aplicadas a un RDD crean otro RDD con el resultado de esas transformaciones 44 Análisis de datos B A T C H Transformacion RDD RDD RDD RDD Acción Valor RDD
  45. 45. §  Ejemplo: Lee un fichero local y realiza una serie de operaciones sobre él Spark //Crear un RDD con el contenido del fichero val: docs = sc.texfile (“..don-quijote.txt.gz”) //Se definen 5 transformaciones val docsMin = docs.map ( _. toLowerCase) val palabras = docsMin.map(_.split(“ ”)) val pares =palabras.map(word=> (word,1)) val freq= pares.reduceByKey( _ + _ ) val invFrec= frec.map(_.swap) //Acción: imprime las 20 mayores invFrec.top(20).foreach(prinln) 45 Análisis de datos B A T C H
  46. 46. Spark §  Ecosistema de Spark §  Spark SQL: Capa de acceso SQL a para ejecutar operaciones dobre los datos que hay en RDD §  Equivalente a Hive en hadoop §  Spark Streaming: Módulo que facilita la construcción de aplicaciones de flujo con tolerancia a fallos y escalable. para procesar en Aempo real grandes canAdades de datos entre clústeres. §  Permite integrar dentro del sistema de procesamiento datos que vengan en forma de streaming §  Mllib: Módulo de aprendizaje automáAco de Apache Spark. §  GraphX: API de Apache Spark para grafos y computación paralela de grafos §  Spark R: Permite conectar R con spark Spark SQL SQL Spark R R sobre Spark GraphX Computo en grafos Spark Streaming MLLib Machine learning Spark Core Engine 46 Análisis de datos B A T C H
  47. 47. Ecosistema Hadoop Hadoop HDFS Zookeeper . . . 47
  48. 48. Ecosistema Hadoop §  En Hadoop 2.0 incorpora YARN (Yet Another Resource Negociator) §  Es un motor de gesAón de recursos y aplicaciones o procesos distribuidos §  Separa las dos funcionalidades del Job Tracker en demonios separados: §  GesMón de recursos §  Planificación/monitorización §  Permite que diferentes Apos de aplicaciones (no solo MapReduce) se ejecuten en el cluster Hadoop HDFS 2 YARN . . . . . . 48
  49. 49. Distribuciones del ecosistema Haddop §  Tecnologías de código abierto §  Su desarrollo es administrado por Apache Soaware FoundaMon §  Se pueden descargar de forma gratuita §  Existen proveedores de Hadoop que proporcionan : §  Versiones con la funcionalidad básica que se pueden descargar de forma gratuita e instalar en una variedad de plataformas de hardware §  Distribuciones de Hadoop comerciales que agrupan el sogware con diferentes niveles de servicios de mantenimiento y soporte §  Mejoras de rendimiento y funcionalidad sobre la base de la tecnología Apache: §  Herramientas de sogware adicionales para facilitar la configuración del clúster y la gesAón, o la integración de datos con plataformas externas 49 . . .
  50. 50. Procesamiento en Aempo real
  51. 51. Tecnologías para el procesamiento en Mempo real q  Flume q  KaVa q  Kestrel q  Storm q Spark streaming q Flume q Trident q S4 51 Almacenamiento de datos Análisis de datos Presentación resultados Adquisición de datos
  52. 52. Flume §  Sistema distribuido para capturar, agregar y mover grandes cuanMdades de datos log §  Diferencia respecto al uso en batch processing: la fuente externa es da datos en streaming y el repositorio externo es un sistema de almacenamiento temporal como KaVa,… Adquisición de datos S T R E A M Kaƒa Canal fuente Sumidero Agente Streaming data Procesamiento 52
  53. 53. Kaƒa §  Es un sistema de mensajería distribuido de alto rendimiento §  Nació como un colector de log, ahora es un sistema de mensajería §  Desarrollada por LinkedIn §  Modelo Productor/Consumidor §  Se ejecuta como un cluster de uno o más servidores (Brokers) §  ManAene todos los datos publicados (sean consumidos o no) por un Aempo configurable §  Se integra sin problemas con muchas herramientas de Apache Almacenamiento de datos S T R E A M RDD RDD Productor (Otros) Productor (Adaptador) Kaƒa Productor (Interfaz) Productor (Servicio) Consumidor (Monitor Mempo –real) Consumidor (Hadoop Clúster) Consumidor (Storm) RDD RDD Consumidor (Otros) 53
  54. 54. Kaƒa §  Ejemplo: Almacenar temporalmente la información recogida de un sensor móvil que mide la Calidad del aire, para enviarla a los consumidores donde se analizará §  Se define el productor // definimos el productor Producer <String, String> producer = new Producer <String, String>(Config); //Abrir el fichero de log del sensor BufferedReader br= new BufferedReader ( new FileReader (“ ……”)) String line; While (true) { Line = br.readLine(); If (line == null) …. ; // espera else producer.send (new KeyedMessage<String, String> (topic, line)); } Nombre del fichero 54 Almacenamiento de datos S T R E A M
  55. 55. Kaƒa §  Ejemplo: §  Se define el consumidor ConsumerConnector consumer =consumer.createJavaConsumerConnector (config); Map <String, Integer> topicCountMap = new HashMap <String, Integer()>; topicCountMap.put (topic, new Integer(1)); Map <String, List<KaVaMessageStream>> consumerMap = consumer.createMessageStream (topicCountMap); KaVaMessageStream stream = consumerMap.get (topic).get(0); consumerIterator it = stream.iterator(); While (it.hasNext()) { It.next(); .. 55 Almacenamiento de datos S T R E A M
  56. 56. Kestrel §  Un sistema de mensajería distribuido §  Desarrollado por Twi…er §  Basado en colas §  Se ejecuta como un cluster de uno o más servidores §  Un servidor Aene un conjunto de colas estrictamente ordenadas (FIFO) §  Los servidores no Aenen ninguna comunicación entre si §  Comparado con KaVa §  Operacionalmente más sencillo §  Tiene peor rendimiento 56 Almacenamiento de datos S T R E A M
  57. 57. Flume §  Permite análisis sencillos datos §  Se basa en definir Interceptores: §  Los interceptores son clases que implementan la interfaz §  Package org.apache.flume.interceptor §  Se definen como parte de la configuración de una fuente §  Analizan los datos a medida que pasan entre la fuente y el canal §  Permiten filtrar, modificar o incluso eliminar basándose en cualquier criterio §  Se pueden encadenar entre sí Análisis de datos S T R E A M Canal fuente sumidero Agente Interceptor 1 Interceptor n … 57
  58. 58. Flume §  Ejemplo: filtrar los datos que provienen del sensor de la estación 2 §  Hay que definir un interceptor que se encargue de filtrar la información Kaƒa Canal fuente sumidero Agente CalidadAire Interceptor 58 Análisis de datos S T R E A M
  59. 59. Flume §  Ejemplo: filtrar los datos que provienen de la estación 2 §  Hay que definir un interceptor que se encargue de filtrar la información Class StaAonFilter implements Interceptor … If ( ! ”StaAon”.equals ( “2” ) ) discard data; Else save data; // definimos la fuente a1.sources = s1 // definimos el interceptor a1.sources.s1.interceptors = i1 a1.sources.s1.interceptors.i1.type = org.apache.flume.interceptor.StaMonFilter // definimos el canal … // definimos el sumidero …… 59 Análisis de datos S T R E A M
  60. 60. Storm §  Sistema de computación distribuida para procesamiento de datos en Tiempo Real §  Desarrollado por Nathan Marz para Twi…er §  Licencia Apache en SepAembre del 2011 §  2014 Storm ha pasado a ser considerado como un Top-Level Project de Apache §  Un cluster Storm es, a un alto nivel, similar a un cluster Hadoop MapReduce 60 Análisis de datos S T R E A M Hadoop-MapReduce JobTracker TaskTracker Job ü  Hay estados ü Cuando una tarea se acaba, el hilo de ejecución termina Storm Nimbus Supervisor Topology ü No hay estados ü Se queda esperando datos de entrada eternamente ü Se para matando la topología
  61. 61. Storm §  Modelo de programación: Topologías §  Definen un grafo de computación que procesa flujos de datos 61 Análisis de datos S T R E A M §  Spout: nodos que se encargan de la entrada de los datos §  Lee los datos de la fuente de origen y los emite hacia los bolt en modo de stream §  Bolt: nodos que se encarga del procesado de los streams §  Pueden realizar operaciones de map reduce, filtrado, funciones, agregados, conexiones con bases de datos externas §  Stream es una secuencia ilimitada de tuplas §  Las tuplas son listas de valores con un nombre específico §  El valor asociado puede ser un objeto o dato de cualquier Apo §  Estándar (integers, longs, shorts, bytes, strings, doubles, floats, booleans, and byte) §  Definidos por el usuario Spout Bolt Stream
  62. 62. Storm §  Ejemplo: Obtener la media de SO2 y NO de cada estación §  Paso 1: construir la topología TopologyBuilder AirAVG = new TopologyBuilder(); AirAVG.setSpout("ca-reader ", new CAReader()); AirAVG.setBolt("ca-avg-processor ", new LineProcessor(), 3).shuffleGrouping(“ca-reader") AirAVG.setBolt(“ca-avg-values", new AvgValues(), 2).fieldsGrouping("ca-avg-processor ", new Fiel ds( “id")); Spout “ca-reader” Bolt “ca-avg-processor” LineProcessor Bolt “ca-avg-values” AvgValues CAReader Shuffle “id” 62 Análisis de datos S T R E A M
  63. 63. §  Ejemplo: Obtener la media de SO2 y NO de cada estación §  Paso 2: Implementar la clase CAReader (IRichSpout Interfece) Storm 63 Análisis de datos S T R E A M
  64. 64. §  Ejemplo: Obtener la media de SO2 y NO de cada estación §  Paso 3: Implementar la clase LineProcesor (IBasicBolt Interfece) Storm 64 Análisis de datos S T R E A M
  65. 65. §  Ejemplo: Obtener la media de SO2 y NO de cada estación §  Paso 4: Implementar la clase AvgValues (IBasicBolt Interfece) Storm 65 Análisis de datos S T R E A M
  66. 66. §  Storm se integra sin problemas con muchas herramientas de Apache §  Ejemplo Storm Flume . . . 66 Análisis de datos S T R E A M
  67. 67. Trident §  Es una abstracción de alto nivel que ofrece Storm §  Los bolts se reemplazan completamente por componentes menos genéricos, como filtros, proyecciones y funciones §  Se está convirAendo en la forma más común de uAlizar Storm 67 Análisis de datos S T R E A M Pros §  Facilita la creación de las topologías §  Permite configurar una topología que procese una entrada de dato asemejándola a una query SQL §  Permite hacer micro-baches Contras §  Menor rendimiento §  latencia más alta que storm
  68. 68. §  Plataforma de propósito general, distribuida, que permite el desarrollo de aplicaciones para el procesamiento de flujos conMnuos e ilimitados de datos §  S4 (Simple Scalable Streaming System) §  Desarrollada por Yahoo §  Se volvió de código abierto para Apache en 2010 antes de presentar Storm como código abierto §  Escrito en Java §  Fácil de programar §  Exponen una interfaz de programación sencilla para los desarrolladores de aplicaciones §  Las aplicaciones pueden ser escritas y desplegadas usando una API sencilla §  Existe gran número de aplicaciones básicas disponibles §  Sistemas basados en S4 están actualmente desplegados en los sistemas de producción de Yahoo! para procesar miles de consultas de búsqueda por segundo S4 68 Análisis de datos S T R E A M
  69. 69. §  Modelo de Programación §  El procesamiento de datos se basa en elementos de proceso (PE ) correspondiente al modelo de actor de la computación concurrente §  Los datos se transmiten en forma de eventos hacia un conjunto PEs §  Cada evento está idenAficado por una clave §  Los eventos son consumidos por los PE . Estos pueden §  EmiAr nuevos eventos para que sean consumidos por otros PE §  Publicar los resultados S4 PE PE PE PE evento evento evento evento publicar publicar publicar 69 Análisis de datos S T R E A M
  70. 70. §  S4 versus Storm S4 ü  Conceptualmente más potente ü  Programación más sencilla ü  Recuperación del estado ü  Balanceo de carga automáAco S4 STORM ü  Distribución automáAca de tareas ü  Depuración sencilla ü  Comunidad muy acAva, Ecosistema ü  Alto rendimiento ü  Mayor control ü  Soporta programación con threads 70 Análisis de datos S T R E A M o  No Aene balanceo de carga automáAco o  Mucho trabajo para el desarrollador o  En desarrollo o  Configuración compleja o  Procesamiento Opaco o  Complicado de depurar o  En incubación en Apache o  Comunidad poco acAva
  71. 71. Samoa §  Es un framework para machine learning en sistemas de procesamiento distribuidos en Mempo real §  Es el equivalente a Apache Mahout para Mempo real §  Es una abstracción de alto nivel §  Permite el desarrollo de nuevos algoritmos sin tratar directamente con la complejidad de los motores de storm, s4 y samza §  Corre sobre Storm, S4 y Samza 71 Análisis de datos S T R E A M
  72. 72. §  Framework de procesamiento en Mempo real del ecosistema Spark Spark Streaming Batch processing Streaming processing Micro batches Spark SQL SQL Spark R R sobre Spark GraphX Computo en grafos Spark Streaming MLLib Machine learning Spark Core Engine §  Ejecuta computación en Aempo real como si fuera una serie de trabajos en pequeños lotes §  Transforma un flujo conMnuo de datos en lotes de X segundos §  Abre una ventana de Aempo en la que está recibiendo datos, y con estos construye RDDs 72 Análisis de datos S T R E A M
  73. 73. Spark streaming - Transforma la fuente streaming en un conjunto de pequeños “batches” (“mini-batch”) - Define una ventana temporal - Pasa de streaming a poder trabajar en el modo batch habitual - Como trabaja con “mini-batch” está más opAmizado para rendimiento que para latencia 73 Análisis de datos S T R E A MDstream (discreMzad stream) Representa una secuencia de RDD §  ManAene todas las caracterísAcas del los RDD §  Representa un flujo de datos constante en el Aempo Datos desde el Mempo 0 hasta el 1 RDD @ t1 Datos desde el Mempo 1 hasta el 2 RDD @ t2
  74. 74. Arquitecturas Hibridas
  75. 75. Procesamiento híbrido Volumen Velocidad Modelo computacional híbrido problemas solución 75 §  Cada vez más, las empresas quieren mezclar los datos en Mempo real con los históricos
  76. 76. Supongamos que queremos un sistema de análisis web que permita consultar el número de páginas visitadas de una URL en cualquier rango de días Necesidad del procesamiento híbrido 76 §  Para obtener el resultado §  Hay que mirar todas las páginas visitadas por esa URL §  Buscar las que están dentro de ese rango de Aempo y contarlas §  Por cada consulta que se haga hay que repeAr el proceso anterior §  Procesando solo los datos almacenados no se Menen en cuenta las visitas que están ocurriendo mientras se hace la consulta §  En número de consultas por minuto es elevado §  Esta canAdad de datos nuevos no están analizados ni contabilizados
  77. 77. Arquitectura del procesamiento híbrido §  Las tecnologías para tratar datos en Aempo real o datos históricos no se hablan de forma natural entre ellas §  No existe una herramienta que combine el procesamiento batch con el procesamiento en Aempo real 77
  78. 78. Arquitectura Lambda §  Definida por Nathan Marz en 2012 §  Publicación §  h…p://www.databasetube.com/database/big-data-lambda-architecture/ §  Libro: §  h…p://www.manning.com/marz/ §  Proponen tres capas: §  Capa de Batch (o Por Lotes) §  Capa de Velocidad §  Capa de Servicio 78
  79. 79. §  Arquitectura Lambda definida por Nathan Marz Arquitectura Lambda Capa Batch Vistas Batch Vistas Batch Capa de servicios Datos nuevos PeMción PeMción Todos los datos Capa de velocidad Vista Mempo real Vista Mempo real 79
  80. 80. Arquitectura Lambda §  Ejemplo anterior ejecutado sobre una arquitectura Lambda “Supongamos que queremos un sistema de análisis web que permita consultar el número de páginas visitadas de una URL en cualquier rango de días” 80 La capa batch Ejecuta previamente la peAción sobre todas las páginas visitadas y calcula un índice con una clave [url , día ] La creación de la vista batch Aene alta latencia , porque se está ejecutando sobre todos los datos que se Aenen La capa de velocidad Permite analizar los datos que están llegando mientras se genera las vistas batch y se realizan las consultas ü  Ya no se pierden datos ü Estos nuevos datos además se van almacenado en el conjunto de datos total Vista batch Proporciona las respuestas a las consultas de manera eficiente ü  Se busca en el conjunto de claves y se cuentan las claves que tengan el día entre rango de Aempo seleccionado La capa de servicio
  81. 81. §  Capa de abstracción Soaware sobre tecnologías Open Source §  Hadoop , HBase , Sqoop , Flume , KaVa , Storm, Trident, Spark §  Desarrollado por Lambdoop, startup de big data lanzada por la asturiana Treelogic §  hFp://www.lambdoop.com/ 81 §  Librería para desarrollar procesos Mpo MapReduce que pueden ser ejecutados en Hadoop, Storm y el modelo Híbrido §  Desarrollada por twi…er §  h…ps://github.com/twi…er/summingbird §  CaracterísAcas §  Desarrollada en Scala §  Modelo de programación para los tres Mpos de paradigma de procesamiento §  No Aene el nivel de abstracción como al usuario le gustaría
  82. 82. Guadalupe Miñana ropero 82

×