3. QUÉ ES SPARK?
Qué es?
Es un Cluster de computación similar a
Hadoop (es complementario a él gracias a
Mesos), fue diseñado para operaciones en
paralelo con grandes datasets distribuidos,
normalmente los procesa en memoria, , así
optimiza las cargas de trabajo iterativas
permitiendo además hacer consultas
interactivas.
Es 100 veces más rápido que Map/Reduce de
Hadoop en memoria y 10 veces más rápido
en disco.
Cómo funciona?
◦ Funciona con RDDs, que es una
colección de objetos (Read-Only)
distribuidos a lo largo de nodos, estos
son resilentes.
◦ Las aplicaciones en Spark son
“drivers”, estos objetos se encargan
de las operaciones realizadas en los
nodos (en modo standalone o
paralelo).
Un driver puede llevar a cabo dos
tipos de operaciones:
▫ Acción: Una acción ejecuta una
computación en un dataset y
devuelve un valor al driver.
▫ Transformación: Una
transformación crea un nuevo
dataset desde un dataset
existente.
3
4. ARQUITECTURA Y CONECTORES
Arquitectura Qué es Mesos?
Mesos (cómo cluster manager) provee de
una plataforma para recursos compartidos y
aislamiento de aplicaciones (sandboxing). Sus
características principales son:
◦ Escalabilidad hasta 10,000 nodos.
◦ Soporte para contenedores Docker.
◦ Aislamiento nativo entre tareas.
◦ Programación multi-recurso.
◦ Programación de aplicaciones en
paralelo en múltiples lenguajes.
◦ Web para visualizar el estado del
cluster.
4
5. COMPONENTES
5
SparkSQL
Permite realizar consultas SQL sobre
datasets distribuidos, estos datasets pueden
tener diversos orígenes, es compatible con
HIVE, permitiendo hacer uso de sus
resultados con consultas sencillas.
Utiliza JDBC y ODBC.
Spark Streaming
Es una extensión del core de Spark, posibilita
el procesamiento de flujos de datos en tiempo
real, esos datos pueden ser inyectados desde
diferentes fuentes y pueden ser procesados
usando complejos algoritmos escritos en alto
nivel.
Este sistema recibe los inputs en tiempo real
y divide los datos en “batches”, estos son
procesados por Spark, el cual genera el
resultado de los “batches” procesados,
además provee de un sistema de abstracción
de alto nivel llamado DStream. Estos pueden
ser creados a partir de otros DStream o
desde las fuentes que soporta Spark
Streaming.
MLib
Es un motor de desición, utiliza la API de
Spark y interopera con NumPy haciendo fácil
la integración de estos procesos en los
workflows de Hadoop.
GraphX
Es un motor que unifica ETL, análisis de
exploración y computación gráfica.
Es extremadamente rápido y tiene una API
súper flexible, además viene acompañado de
una gran variedad de algoritmos gráficos.
7. QUÉ ES STORM?
Qué es?
Es un sistema computacional distribuido en
tiempo real (Trident), se utiliza para:
◦ Analíticas en tiempo real.
◦ Machine learning en tiempo real.
◦ Ejecución de RPCs distribuidos.
◦ ETLs.
◦ , etc.
Su nombre es muy apropiado, es muy rápido,
procesa casi un millón de tuplas por segundo
y por nodo, además funciona como un cluster
de Hadoop.
Cómo funciona?
Storm consume flujos de datos y los procesa
de maneras complejas de forma arbitraria.
Posee 2 tipos de nodos, el master y el
worker.
◦ El master ejecuta un demonio llamado
“Nimbus”, este es responsable de
distribuir los datos en el cluster,
asignar tareas a las máquinas y
monitorizar.
◦ Cada worker ejecuta un demonio
llamado “Supervisor”, este escucha si
tiene trabajos asignados e inicia o para
procesos en base a lo que le dicte
“Nimbus”.
7
8. ARQUITECTURA Y COMPONENTES
Arquitectura Componentes
La coordinación entre los nodos de Storm la
lleva a cabo ZooKeeper.
Storm se posee 3 componentes básicos:
◦ Topologies: Se utilizan para realizar
tareas de computación en tiempo real,
son similares a las tareas
Map/Reduce, pero al contrario que
estas, las topologías están
continuamente procesando mensajes.
◦ Streams: Es la abstracción del core de
Storm. Storm provee de primitivas
para la transformación de streams de
forma distribuida, las más básicas son:
▫ Spouts: Es una fuente de
streams.
▫ Bolts: Procesa streams
entrantes y posibilita la emisión
del resultado como un nuevo
stream.
◦ Data model: Storm utiliza tuplas como
modelo de datos.
8
11. COMPAREMOS
11
Diferencias
STORM SPARK
Distribución semántica Al menos una vez
Exactamente una vez con Trident
Exactamente una vez
Excepto en algunos escenarios de error
Administración de estado Sin estado
Hazte el tuyo o utiliza Trident
Con estados
Escribe los estados en almacenamiento
Latencia Por debajo de segundos Segundos
Depende del tamaño del batch
Lenguajes soportados Cualquiera Scala, Java, Python
12. COMPAREMOS
12
Velocidad de incidencias en
Storm
La comunidad es importante
Velocidad de incidencias en
Spark
En los últimos 60 días, Storm ha tenido
34 contribuidores únicos
En los últimos 60 días, Spark ha tenido
140 contribuidores únicos
14. Características
Sistema de mensajería distribuido.
Soporta gran volumen de eventos. Eficiente en procesamiento de datos en tiempo real.
El diseño persigue crear a partir de los eventos originales, nuevos eventos derivados.
Permite la entrega de mensajes desde sistemas tradicionales con baja latencia
Garantiza la tolerancia a fallos si aparecen fallos en algunos nodos
KAFKA
Conceptos
◦ Topics: son categoría para los mensajes
◦ Producers: procesos que publican
mensajes
◦ Consumers: procesos que se suscriben a
topics y reciben/procesan los mensajes
◦ Brokers: cada uno de los nodos que
componen el grupo
14
15. KAFKA
Organización de los topics:
◦ Las Partitions son estructuras ordenadas e
inmutables a las que se “encolan” mensajes.
Tienen un id secuencial llamado offset
◦ Todos los mensajes se guardan durante un
periodo configurable de tiempo
◦ Las Partitions permiten la escalabilidad y
redundancia.
◦ Esta estructura permite la implementación de
tanto de modelos basados en queues como
Publish-Subscribe.
15
16. KAFKA
Consumer
◦ Cada consumer tiene una etiqueta que
identifica al grupo al que pertenece
◦ Cada mensaje que se envía a un topic se
entrega a una instancia dentro de cada
grupo de consumers suscritos.
◦ Cada consumer pueden correr en
diferentes procesos o máquinas
16
Producers
◦ Publican mensajes y es responsable de
elegir a que topic enviar que mensaje.
◦ La política puede ser todo lo compleja que
se requiera.
◦ Cada producer envía mensajes a uno o
más topics.
17. KAFKA
Casos de uso
◦ Message Broker (ActiveMQ or RabbitMQ)
◦ Monitorización y tracking de sitios web
◦ Sistemas de monitorización de métricas
◦ Agregacion de logs. La baja latencia de Kafka lo pone por encima de otros sistemas como
Scribe o Flume
◦ Procesamiento de texto. Los frameworks Storm y Samza usan esta capacidad de Kafka.
◦ Aplicaciones que se abastecen con eventos.
17
19. HIVE
Qué es?
◦ Proporciona un conjunto de
operaciones sobre datos.
◦ Funciona sobre Hadoop.
◦ Provee un dialecto de SQL llamado
HQL (Hive Query Language) cercano
al de MySQL.
◦ En las primeras versiones no
soportaba transacciones ni
operaciones sobre rows.
◦ Adecuado para tratamiento de datos
en lotes.
◦ Permite añadir nuevas operaciones
Map/Reduce a aplicar a los datos.
19
Cómo funciona?
◦ Wrapper “SQL” sobre datos almacenados en
Hadoop.
◦ Mediante un “driver” las consultas en HQL se
convierten en operaciones nativas de
Hadoop.
◦ Permite implementar procesos ETL sobre los
datos.
20. HIVE
PIG VS HIVE
◦ Ambos añaden una capa de lógica a Hadoop usando pseudo -
SQL
◦ HIVE añade tratamiento de volúmenes mayores de datos
Rendimiento
20