21
ESTUDIO DE SPARK, STORM, PIG, KAFKA y HIVE 1

Estudio sobre Spark, Storm, Kafka y Hive

Embed Size (px)

Citation preview

Page 1: Estudio sobre Spark, Storm, Kafka y Hive

ESTUDIO DE SPARK, STORM, PIG, KAFKA y HIVE

1

Page 2: Estudio sobre Spark, Storm, Kafka y Hive

SPARK Estudio de Spark

1

2

Page 3: Estudio sobre Spark, Storm, Kafka y Hive

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

Page 4: Estudio sobre Spark, Storm, Kafka y Hive

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

Page 5: Estudio sobre Spark, Storm, Kafka y Hive

COMPONENTES

5

SparkSQLPermite 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 StreamingEs 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.

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

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

Page 6: Estudio sobre Spark, Storm, Kafka y Hive

6

STORM Estudio de Storm

Page 7: Estudio sobre Spark, Storm, Kafka y Hive

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

Page 8: Estudio sobre Spark, Storm, Kafka y Hive

ARQUITECTURA Y COMPONENTES

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

Page 9: Estudio sobre Spark, Storm, Kafka y Hive

9

STORM VS SPARKSTREAMING

Page 10: Estudio sobre Spark, Storm, Kafka y Hive

COMPAREMOS

10

Conceptos

STORM SPARK

Fuentes de Stream Spouts Receivers

Primitivas de Stream Tupla DStream

Computación de Stream Bolts Transformaciones

Page 11: Estudio sobre Spark, Storm, Kafka y Hive

COMPAREMOS

11

Diferencias

STORM SPARK

Distribución semántica Al menos una vezExactamente una vez con Trident

Exactamente una vezExcepto en algunos escenarios de

error

Administración de estado

Sin estadoHazte el tuyo o utiliza Trident

Con estadosEscribe los estados en

almacenamiento

LatenciaPor debajo de

segundosSegundos

Depende del tamaño del batch

Lenguajes soportados Cualquiera Scala, Java, Python

Page 12: Estudio sobre Spark, Storm, Kafka y Hive

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

Page 13: Estudio sobre Spark, Storm, Kafka y Hive

KAFKA Mensajes

13

Page 14: Estudio sobre Spark, Storm, Kafka y Hive

CaracterísticasSistema 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 latenciaGarantiza 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

Page 15: Estudio sobre Spark, Storm, Kafka y Hive

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

Page 16: Estudio sobre Spark, Storm, Kafka y Hive

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.

Page 17: Estudio sobre Spark, Storm, Kafka y Hive

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

Page 18: Estudio sobre Spark, Storm, Kafka y Hive

HiveData Warehouse

18

Page 19: Estudio sobre Spark, Storm, Kafka y Hive

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.

Page 20: Estudio sobre Spark, Storm, Kafka y Hive

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

Page 21: Estudio sobre Spark, Storm, Kafka y Hive

21

LINKS

http://www.ibm.com/developerworks/library/os-spark/#togglehttp://www.slideshare.net/EvanChan2/cassandra2013-spark-talk-finalhttps://spark.apache.org/docs/latest/streaming-programming-guide.htmlhttp://www.eecs.berkeley.edu/Pubs/TechRpts/2012/EECS-2012-214.pdfhttp://www.cs.berkeley.edu/~matei/papers/2010/hotcloud_spark.pdfhttps://spark.apache.org/docs/latest/mllib-decision-tree.htmlhttp://ampcamp.berkeley.edu/big-data-mini-course/graph-analytics-with-graphx.htmlhttps://amplab.github.io/graphx/https://storm.apache.orghttp://es.slideshare.net/ptgoetz/apache-storm-vs-spark-streaminghttp://www.quora.com/What-is-the-criteria-to-chose-Pig-Hive-Hbase-Storm-Solr-Spark-to-analyze-your-data-in-Hadoophttp://www.slideshare.net/EvanChan2/cassandra2013-spark-talk-finalhttp://www.zdatainc.com/2014/09/apache-storm-apache-spark/http://java.dzone.com/articles/streaming-big-data-storm-sparkhttps://storm.apache.org/documentation/Trident-tutorial.htmlhttp://www.larsgeorge.com/2009/10/hive-vs-pig.htmlhttps://cwiki.apache.org/confluence/display/Hive/GettingStartedhttps://cwiki.apache.org/confluence/display/Hive/Tutorialhttp://es.slideshare.net/nzhang/hive-training-motivations-and-real-world-use-cases