Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

¿Por que cambiar de Apache Hadoop a Apache Spark?

2,431 views

Published on

Abstract de la charla realizada en SUGAR - Scala User Group Argentina

Apache Spark [1] es un framework para procesamiento distribuído diseñado para ser amigable para Data-Scientists y programadores, con soporte nativo a muchos lenguajes y diversidad de formatos de datos es extramadamente flexible. Cambiando el modelo establecido por Hadoop v1 de Map-Reduce por un grafo de ejecución (DAG) y manteniendo los pasos intermédios en RAM, Spark brinda excelente performance y una API muy expresiva.

Gustavo Arjones [2], CTO de Socialmetrix, va contar la experiencia que tuvieron al cambiarse de Hadoop a Spark y lo que los llevaron a este cambio. Esta charla es una introducción teorica y practica a Spark y sus distintos componentes.

Los tópicos a discutir son:

• Qué és?

• Aspectos que hacen Spark tan atractivo para la comunidad

• Plataforma unificada para Data Science (Batch, Stream, ML, Graph)

• Soporte a distintos lenguajes

• Ejecución: RDD y DAG / Task Scheduller

• Tracción de la comunidad (# commits, # commiters)

• testing, etc

• Demos:

• Spark-shell: Explicar paso a paso el WordCount

• LogAnalytics - compilar y submeter al cluster

• SQL/DataFrames: Demostrar que se puede consumir directamente JSON y hacer queries con SQL

[1] http://spark.apache.org
[2] https://linkedin.com/in/arjones

Published in: Technology

¿Por que cambiar de Apache Hadoop a Apache Spark?

  1. 1. ¿Por qué cambiar de Hadoop a Spark? Teoria y ejemplos de nuestra experiencia Gustavo Arjones gustavo@socialmetrix.com @arjones
  2. 2. 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
  3. 3. #1 Interacción
  4. 4. 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
  5. 5. Empiezan los problemas
  6. 6. HQL  complejas   son  para  escribir   una  vez  y  nunca   más  entenderlas!  
  7. 7. 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
  8. 8. 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
  9. 9. 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
  10. 10. 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!
  11. 11. ¿Qué hacemos?
  12. 12. Seguimos por el mismo camino? •  Probar Pig •  Probar Cascading (o Scalding) •  Probar Hbase Pero seguíamos preocupados con el tiempo de ejecución!
  13. 13. ¿Probamos el framework que la gente viene hablando?
  14. 14. 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
  15. 15. 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
  16. 16. DEMO – Word Count (el hello world de BigData)
  17. 17. ¿Por qué nos gusta?
  18. 18. Viene de buen “origen” BDAS, the Berkeley Data Analytics Stack (AMPLAB)
  19. 19. Plataforma Unificada
  20. 20. 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
  21. 21. Proyecto muy activo (y ganando tracción) ’13-’14
  22. 22. Proyecto muy activo 2015
  23. 23. h;ps://twi;er.com/bigdata/status/610482424741367809  
  24. 24. 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 (?)
  25. 25. 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
  26. 26. Compacto y poderoso •  Escrito en Scala, con wrappers para Python, Java* y R
  27. 27. API muy expresiva Ver: https://spark.apache.org/docs/latest/api/scala/#org.apache.spark.rdd.RDD + SQL + Data Frames
  28. 28. •  Aprender, prototipado rápido •  Análisis interactivo sobre los datos Consola interactiva (REPL)
  29. 29. Version Web de Spark-Shell – similar a Python Notebooks
  30. 30. Spark UI h;ps://databricks.com/blog/2015/06/22/understanding-­‐ your-­‐spark-­‐applicaMon-­‐through-­‐visualizaMon.html  
  31. 31. Soporte Datasources h;p://spark-­‐packages.org  
  32. 32. Spark SQL Demo
  33. 33. Código Testeable! •  El contexto puede crear RDD
  34. 34. Easy Deployment •  Local-mode (development) •  Standalone (bare metal) •  Standalone + Amazon AWS •  Mesos •  Yarn
  35. 35. Components for distributed execution in Spark
  36. 36. 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/
  37. 37. 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
  38. 38. 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)
  39. 39. Spark y Hadoop pueden ser amigos •  No hay HDFS en Spark – ver Tachyon •  Acceso HDFS / S3 •  YARN •  Usando Input/Output formats de Hadoop
  40. 40. Log Analyzer https://www.gitbook.com/book/ databricks/databricks-spark-reference- applications/details
  41. 41. 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/
  42. 42. Donde aprender más?
  43. 43. 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/
  44. 44. No te gustó Spark? Apache Flink http://flink.apache.org
  45. 45. Gracias & Obrigado! Gustavo Arjones gustavo@socialmetrix.com @arjones

×