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