¿por que cambiar de apache hadoop a apache spark?
TRANSCRIPT
¿Por qué cambiar de Hadoop a Spark? Teoria y ejemplos de nuestra experiencia
Gustavo Arjones [email protected] @arjones
Co-founder & CTO Lic. Ciencias Computación MBA Marketing Servicios @arjones [email protected] 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 [email protected] @arjones