¿Por que cambiar de Apache Hadoop a Apache Spark?

Post on 04-Aug-2015

235 views 4 download

Transcript of ¿Por que cambiar de Apache Hadoop a Apache Spark?

¿Por qué cambiar de Hadoop a Spark? Teoria y ejemplos de nuestra experiencia

Gustavo Arjones gustavo@socialmetrix.com @arjones

Co-founder & CTO Lic. Ciencias Computación MBA Marketing Servicios @arjones gustavo@socialmetrix.com linkedIn.com/in/arjones Brasileño, en ARG desde 2008

Gustavo Arjones

#1 Interacción

Razones para elección

•  Reducir las incertimdubres del proyecto

•  HiveQL à SQL menor ramp-up

•  Hadoop/Hive tenía soporte en AWS

•  Proof of Concept funcionó correctamente

•  Pruebas con DynamoDB demonstraron ser muy costosas

Empiezan los problemas

HQL  complejas  son  para  escribir  una  vez  y  nunca  más  entenderlas!  

Hive es difícil de testear

•  Frameworks de tests para Hive no están maduros y son dificiles de implementar.

•  Gastamos mucho tiempo y recursos escribiendo validadores de procesos y métricas

No están las últimas versiones de Hive en AWS

•  Se había lanzado Hive 0.13 hacias 4+ meses y nosotros todavía teníamos Hive 0.12 en AWS

•  Perdíamos la dinámica de un proyecto con muchas features nuevas y mejoras de performance

MySQL retrasaba los jobs

•  Cuando los MapReduce jobs terminanban y había que enviar los datos a MySQL, estaba tomando 2x más tiempo que el MR de cálculo.

•  Problemas típicos de MySQL, pérdida de performance en grande volúmenes de datos

•  Limite de escalabilidad

Y como resultado …

•  Bugs aumentando

•  Tiempo de proyecto dilatandose

•  Baja reutilización de codigo

•  Problemas que atraparías en COMPILE-TIME terminan en RUNTIME – porque es SQL!

¿Qué hacemos?

Seguimos por el mismo camino?

•  Probar Pig

•  Probar Cascading (o Scalding)

•  Probar Hbase

Pero seguíamos preocupados con el tiempo de ejecución!

¿Probamos el framework que la gente viene hablando?

Qué es Spark? Apache Spark™ is a fast and general engine for large-scale data processing. •  Procesamiento In-memory (preferencialmente)

•  Framework de Procesamiento Unificado

•  Para Ingenieros & Data Scientists

Principales Pilares Task Scheduler •  Prepara los jobs a traves de DAG (Directed acyclic

graph) •  Enganchan funciones para ejecutar los stages •  Cache-aware; considera data utilización &

localización (data locality) •  Partitioning-aware para reducir shuffles por la red

RDD (Resilient Distributed Datasets) •   Estructura de datos Immutable (In-memory) •  Tolerante a fallas (Se reama en caso de falla) •  Estructura de datos que puede ser operada en

paralelo • Rica interfaz de Transformations & Actions

DEMO – Word Count (el hello world de BigData)

¿Por qué nos gusta?

Viene de buen “origen” BDAS, the Berkeley Data Analytics Stack (AMPLAB)

Plataforma Unificada

Plataforma Unificada (lines of code)

0 20000 40000 60000 80000

100000 120000 140000

Hadoop MapReduce

Storm (Streaming)

Impala (SQL) Giraph (Graph)

Spark

non-test, non-example source lines (2014 numbers)

GraphX

Streaming SparkSQL

Proyecto muy activo (y ganando tracción) ’13-’14

Proyecto muy activo 2015

h;ps://twi;er.com

/bigdata/status/610482424741367809  

Y más … •  Esfuerzo para estandarización de la plataforma

•  Certificación para Distros & Apps gratis

•  Material de training gratis

•  Databricks levantó $47M

•  Databricks Cloud (?)

Ventajas de la Plataforma Unificada

•  No es necesario copiar datos/ETL entre sistemas

•  Varios procesamientos en el mismo código (claridad)

•  Reutilización de código (Batch & Realtime)

•  Un único sistema para aprender ß Happy Devs

•  Ops: Un único sistema para mantener ß Happy Ops

Big Deal para Arquitectura Lambda

Compacto y poderoso •  Escrito en Scala, con wrappers para Python, Java* y R

API muy expresiva

Ver: https://spark.apache.org/docs/latest/api/scala/#org.apache.spark.rdd.RDD

+ SQL +

Data Frames

•  Aprender, prototipado rápido •  Análisis interactivo sobre los datos

Consola interactiva (REPL)

Version Web de Spark-Shell – similar a Python Notebooks

Spark UI

h;ps://databricks.com

/blog/2015/06/22/und

erstanding-­‐

your-­‐spark-­‐app

licaM

on-­‐throu

gh-­‐visu

aliza

Mon.html  

Soporte Datasources

h;p://spark-­‐packages.org  

Spark SQL Demo

Código Testeable! •  El contexto puede crear RDD

Easy Deployment

•  Local-mode (development)

•  Standalone (bare metal)

•  Standalone + Amazon AWS

•  Mesos

•  Yarn

Components for distributed execution in Spark

Y Hadoop? Spark Or Hadoop -- Which Is The Best Big Data Framework? http://www.forbes.com/sites/bernardmarr/2015/06/22/spark-or-hadoop-which-is-the-best-big-data-framework/

Modelo Map-Reduce

iter. 1 iter. 2 . . .

Input

HDFS read

HDFS write

HDFS read

HDFS write

Input

query 1

query 2

query 3

result 1

result 2

result 3

. . .

HDFS read

Lento porque necesita replicación, serialización y I/O

iter. 1 iter. 2 . . .

Input

Distributed memory

Input

query 1

query 2

query 3

. . .

one-time processing

10-100× más rápido

Spark (in-memory + DAG execution engine)

Spark y Hadoop pueden ser amigos •  No hay HDFS en Spark – ver Tachyon •  Acceso HDFS / S3 •  YARN •  Usando Input/Output formats de Hadoop

Log Analyzer https://www.gitbook.com/book/databricks/databricks-spark-reference-applications/details

Entonces todo es perfecto? Nop … •  Long Jobs •  Serialization Issues •  OOM •  Data Locallity

http://blog.cloudera.com/blog/2015/05/working-with-apache-spark-or-how-i-learned-to-stop-worrying-and-love-the-shuffle/

Donde aprender más?

Mucha documentación disponible Official Documentation https://spark.apache.org/ Spark Summit 2015 - Slides and Video https://spark-summit.org/2015/ Blog Official Databricks https://databricks.com/blog Personal notes about Apache Spark http://arjon.es/tag/spark/

No te gustó Spark? Apache Flink http://flink.apache.org

Gracias & Obrigado!

Gustavo Arjones gustavo@socialmetrix.com @arjones