Introducción Apache Spark 
Gustavo Arjones 
gustavo@socialmetrix.com 
@arjones
Gustavo Arjones 
Co-founder & CTO, Socialmetrix 
Lic. Ciencias Computación 
MBA Marketing Servicios 
@arjones 
gustavo@socialmetrix.com 
Brasileño, en ARG desde 2008
Qué es 
Apache Spark?
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
Porqué me 
gusta?
Viene de buen “origen” 
BDAS, the Berkeley Data Analytics Stack (AMPLAB)
Compacto y poderoso 
• Escrito en Scala, con wrappers para Python y Java*
API muy expresiva 
Ver: https://spark.apache.org/docs/latest/api/scala/#org.apache.spark.rdd.RDD
Consola interactiva 
• Aprender, prototipado rápido 
• Análisis interactivo sobre los datos
Plataforma Unificada
Plataforma Unificada 
• No es necesario copiar datos/ETL entre sistemas 
• Varios tipos de procesamientos en el mismo código 
(claridad) 
• Reutilización de código (Batch & Realtime) 
• Un único sistema para aprender 
• Un único sistema para mantener 
Big Deal para 
Arquitectura Lambda
Plataforma Unificada (lines of code) 
140000 
120000 
100000 
80000 
60000 
40000 
20000 
0 
Hadoop 
MapReduce 
Storm 
(Streaming) 
Impala 
(SQL) 
Giraph 
(Graph) 
Spark 
non-test, non-example source lines 
GraphX 
SparkSQL 
Streaming
Spark UI
Código Testeable! 
• El contexto puede crear RDD
Proyecto muy activo (y ganando tracción)
Proyecto MUY activo (y ganando tracción) 
250 
200 
150 
100 
50 
0 
Patches 
MapReduce Storm 
Yarn Spark 
*as of June 1, 2014 
45000 
40000 
35000 
30000 
25000 
20000 
15000 
10000 
5000 
0 
Lines Added 
MapReduce Storm 
Yarn Spark 
16000 
14000 
12000 
10000 
8000 
6000 
4000 
2000 
0 
Lines Removed 
MapReduce Storm 
Yarn Spark
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???
Y Hadoop?
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
Spark (in-memory + DAG execution engine) 
iter. 1 iter. 2 . . . 
Input 
Distributed 
memory 
Input 
query 1 
query 2 
query 3 
. . . 
one-time 
processing 
10-100× más rápido
Spark y Hadoop pueden ser amigos 
• YARN / Mesos 
• Acceso HDFS / S3 
• Usando Input/Output 
formats de Hadoop
DEMO 
http://bit.ly/NardozSparkDemo
Donde aprender 
más?
Mucha documentación disponible 
https://spark.apache.org/documentation.html 
http://spark-summit.org/2014/training 
http://shop.oreilly.com/product/06369200285 
12.do 
http://arjon.es/tag/spark/
Gracias & Obrigado! 
Gustavo Arjones 
gustavo@socialmetrix.com 
@arjones

Introducción a Apache Spark

  • 1.
    Introducción Apache Spark Gustavo Arjones gustavo@socialmetrix.com @arjones
  • 2.
    Gustavo Arjones Co-founder& CTO, Socialmetrix Lic. Ciencias Computación MBA Marketing Servicios @arjones gustavo@socialmetrix.com Brasileño, en ARG desde 2008
  • 3.
  • 4.
    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
  • 5.
    Principales Pilares TaskScheduler • 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
  • 6.
  • 7.
    Viene de buen“origen” BDAS, the Berkeley Data Analytics Stack (AMPLAB)
  • 8.
    Compacto y poderoso • Escrito en Scala, con wrappers para Python y Java*
  • 9.
    API muy expresiva Ver: https://spark.apache.org/docs/latest/api/scala/#org.apache.spark.rdd.RDD
  • 10.
    Consola interactiva •Aprender, prototipado rápido • Análisis interactivo sobre los datos
  • 11.
  • 12.
    Plataforma Unificada •No es necesario copiar datos/ETL entre sistemas • Varios tipos de procesamientos en el mismo código (claridad) • Reutilización de código (Batch & Realtime) • Un único sistema para aprender • Un único sistema para mantener Big Deal para Arquitectura Lambda
  • 13.
    Plataforma Unificada (linesof code) 140000 120000 100000 80000 60000 40000 20000 0 Hadoop MapReduce Storm (Streaming) Impala (SQL) Giraph (Graph) Spark non-test, non-example source lines GraphX SparkSQL Streaming
  • 14.
  • 15.
    Código Testeable! •El contexto puede crear RDD
  • 16.
    Proyecto muy activo(y ganando tracción)
  • 17.
    Proyecto MUY activo(y ganando tracción) 250 200 150 100 50 0 Patches MapReduce Storm Yarn Spark *as of June 1, 2014 45000 40000 35000 30000 25000 20000 15000 10000 5000 0 Lines Added MapReduce Storm Yarn Spark 16000 14000 12000 10000 8000 6000 4000 2000 0 Lines Removed MapReduce Storm Yarn Spark
  • 18.
    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???
  • 19.
  • 20.
    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
  • 21.
    Spark (in-memory +DAG execution engine) iter. 1 iter. 2 . . . Input Distributed memory Input query 1 query 2 query 3 . . . one-time processing 10-100× más rápido
  • 22.
    Spark y Hadooppueden ser amigos • YARN / Mesos • Acceso HDFS / S3 • Usando Input/Output formats de Hadoop
  • 23.
  • 24.
  • 25.
    Mucha documentación disponible https://spark.apache.org/documentation.html http://spark-summit.org/2014/training http://shop.oreilly.com/product/06369200285 12.do http://arjon.es/tag/spark/
  • 26.
    Gracias & Obrigado! Gustavo Arjones gustavo@socialmetrix.com @arjones

Notas del editor

  • #21 Each iteration is, for example, a MapReduce job